feat: Start implementing roles (and domainless service users)

This commit is contained in:
selfhoster selfhoster 2026-09-04 18:35:46 +02:00
commit 10548295cd
10 changed files with 156 additions and 21 deletions

View file

@ -1,4 +1,4 @@
use crate::db::error::{BoxedError, UserAlreadyExists};
use crate::db::error::{BoxedError, UserCreationError};
use crate::db::{Database, User, UserRef};
impl<D: DatabaseInterface> DatabaseInterface for Database<D> {
@ -9,9 +9,21 @@ impl<D: DatabaseInterface> DatabaseInterface for Database<D> {
async fn create_user(
&mut self,
user: User,
) -> Result<Result<(), UserAlreadyExists>, BoxedError> {
) -> Result<Result<(), UserCreationError>, BoxedError> {
self.inner.write().await.create_user(user).await
}
async fn try_create_user(
&mut self,
new_user: User,
current_user: &User,
) -> Result<Result<(), UserCreationError>, BoxedError> {
self.inner
.write()
.await
.try_create_user(new_user, current_user)
.await
}
}
pub trait DatabaseInterface: Clone + Send + Sync + 'static {
@ -19,5 +31,11 @@ pub trait DatabaseInterface: Clone + Send + Sync + 'static {
async fn create_user(
&mut self,
user: User,
) -> Result<Result<(), UserAlreadyExists>, BoxedError>;
) -> Result<Result<(), UserCreationError>, BoxedError>;
#[expect(unused)]
async fn try_create_user(
&mut self,
new_user: User,
current_user: &User,
) -> Result<Result<(), UserCreationError>, BoxedError>;
}