pub fn admins(conn: &PgConnection) -> Result<Vec<Self>, Error> {
use super::user_view::user_fast::dsl::*;
+ use diesel::sql_types::{Text, Nullable};
user_fast
+ // The select is necessary here to not get back emails
+ .select((id, actor_id, name, avatar, "".into_sql::<Nullable<Text>>(), matrix_user_id, bio, local, admin, banned, show_avatars, send_notifications_to_email, published, number_of_posts, post_score, number_of_comments, comment_score))
.filter(admin.eq(true))
.order_by(published)
.load::<Self>(conn)
pub fn banned(conn: &PgConnection) -> Result<Vec<Self>, Error> {
use super::user_view::user_fast::dsl::*;
- user_fast.filter(banned.eq(true)).load::<Self>(conn)
+ use diesel::sql_types::{Text, Nullable};
+ user_fast
+ .select((id, actor_id, name, avatar, "".into_sql::<Nullable<Text>>(), matrix_user_id, bio, local, admin, banned, show_avatars, send_notifications_to_email, published, number_of_posts, post_score, number_of_comments, comment_score))
+ .filter(banned.eq(true)).load::<Self>(conn)
}
}
let creator_user = admins.remove(creator_index);
admins.insert(0, creator_user);
- // If its not the same user, remove the email
- if let Some(user_id) = user_id {
- if user_details_id != user_id {
- user_view.email = None;
- }
- } else {
+ // If its not the same user, remove the email, and settings
+ // TODO an if let chain would be better here, but can't figure it out
+ // TODO separate out settings into its own thing
+ if user_id.is_none() || user_details_id != user_id.unwrap_or(0) {
user_view.email = None;
}