feat(otter): cli command to toggle admin status
This commit is contained in:
parent
ee9db5ae36
commit
b946e1ce98
6 changed files with 50 additions and 2 deletions
|
|
@ -2,7 +2,7 @@ use diesel::prelude::*;
|
|||
|
||||
use crate::schema::*;
|
||||
|
||||
#[derive(Clone, Queryable, Selectable)]
|
||||
#[derive(Clone, Queryable, Selectable, AsChangeset)]
|
||||
#[diesel(table_name = users)]
|
||||
#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
|
||||
pub struct User {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,17 @@ impl From<User> for gpodder::User {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<gpodder::User> for User {
|
||||
fn from(value: gpodder::User) -> Self {
|
||||
Self {
|
||||
id: value.id,
|
||||
username: value.username,
|
||||
password_hash: value.password_hash,
|
||||
admin: value.admin,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<SignupLink> for gpodder::SignupLink {
|
||||
fn from(value: SignupLink) -> Self {
|
||||
Self {
|
||||
|
|
@ -58,6 +69,18 @@ impl gpodder::GpodderAuthStore for SqliteRepository {
|
|||
.map_err(DbError::from)?)
|
||||
}
|
||||
|
||||
fn update_user(&self, user: gpodder::User) -> Result<gpodder::User, AuthErr> {
|
||||
let conn = &mut self.pool.get().map_err(DbError::from)?;
|
||||
let user: User = user.into();
|
||||
|
||||
Ok(diesel::update(users::table.filter(users::id.eq(user.id)))
|
||||
.set(&user)
|
||||
.returning(User::as_returning())
|
||||
.get_result(conn)
|
||||
.map(gpodder::User::from)
|
||||
.map_err(DbError::from)?)
|
||||
}
|
||||
|
||||
fn get_session(&self, session_id: i64) -> Result<Option<gpodder::models::Session>, AuthErr> {
|
||||
match sessions::table
|
||||
.inner_join(users::table)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue