CommunityModeratorView,
CommunityPersonBanView,
CommunityView,
+ PersonViewSafe,
};
use lemmy_utils::{
claims::Claims,
location_info,
rate_limit::RateLimitConfig,
settings::structs::Settings,
- utils::{build_slur_regex, generate_random_string},
+ utils::slurs::build_slur_regex,
};
use regex::Regex;
use reqwest_middleware::ClientWithMiddleware;
Ok(())
}
+pub async fn is_top_admin(pool: &DbPool, person_id: PersonId) -> Result<(), LemmyError> {
+ let admins = PersonViewSafe::admins(pool).await?;
+ let top_admin = admins
+ .get(0)
+ .ok_or_else(|| LemmyError::from_message("no admins"))?;
+
+ if top_admin.person.id != person_id {
+ return Err(LemmyError::from_message("not_top_admin"));
+ }
+ Ok(())
+}
+
pub fn is_admin(local_user_view: &LocalUserView) -> Result<(), LemmyError> {
if !local_user_view.person.admin {
return Err(LemmyError::from_message("not_an_admin"));
settings: &Settings,
) -> Result<(), LemmyError> {
// Generate a random token
- let token = generate_random_string();
+ let token = uuid::Uuid::new_v4().to_string();
// Insert the row
let token2 = token.clone();
let form = EmailVerificationForm {
local_user_id: user.local_user.id,
email: new_email.to_string(),
- verification_token: generate_random_string(),
+ verification_token: uuid::Uuid::new_v4().to_string(),
};
let verify_link = format!(
"{}/verify_email/{}",
Ok(Url::parse(&format!("{actor_id}/outbox"))?.into())
}
+pub fn generate_featured_url(actor_id: &DbUrl) -> Result<DbUrl, ParseError> {
+ Ok(Url::parse(&format!("{actor_id}/featured"))?.into())
+}
+
pub fn generate_moderators_url(community_id: &DbUrl) -> Result<DbUrl, LemmyError> {
Ok(Url::parse(&format!("{community_id}/moderators"))?.into())
}