Add displayname argument to full_register.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
use std::fmt::Write;
|
|
||||||
|
|
||||||
use futures::FutureExt;
|
use futures::FutureExt;
|
||||||
use ruma::{UserId, events::GlobalAccountDataEventType, push};
|
use ruma::{UserId, events::GlobalAccountDataEventType, push};
|
||||||
use tuwunel_core::{Err, Result, error, implement, info, is_equal_to, warn};
|
use tuwunel_core::{Err, Result, error, implement, info, is_equal_to, warn};
|
||||||
@@ -15,6 +13,8 @@ pub struct Register<'a> {
|
|||||||
pub appservice_info: Option<&'a RegistrationInfo>,
|
pub appservice_info: Option<&'a RegistrationInfo>,
|
||||||
pub is_guest: bool,
|
pub is_guest: bool,
|
||||||
pub grant_first_user_admin: bool,
|
pub grant_first_user_admin: bool,
|
||||||
|
pub displayname: Option<&'a str>,
|
||||||
|
pub omit_displayname_suffix: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fully register a local user
|
/// Fully register a local user
|
||||||
@@ -32,6 +32,8 @@ pub async fn full_register(
|
|||||||
appservice_info,
|
appservice_info,
|
||||||
is_guest,
|
is_guest,
|
||||||
grant_first_user_admin,
|
grant_first_user_admin,
|
||||||
|
displayname,
|
||||||
|
omit_displayname_suffix,
|
||||||
}: Register<'_>,
|
}: Register<'_>,
|
||||||
) -> Result {
|
) -> Result {
|
||||||
let ref user_id = user_id
|
let ref user_id = user_id
|
||||||
@@ -59,31 +61,33 @@ pub async fn full_register(
|
|||||||
.create(user_id, password, origin)
|
.create(user_id, password, origin)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
// Default to pretty displayname
|
let displayname_suffix = self
|
||||||
let mut displayname = user_id.localpart().to_owned();
|
|
||||||
|
|
||||||
// If `new_user_displayname_suffix` is set, registration will push whatever
|
|
||||||
// content is set to the user's display name with a space before it
|
|
||||||
if !self
|
|
||||||
.services
|
.services
|
||||||
.config
|
.config
|
||||||
.new_user_displayname_suffix
|
.new_user_displayname_suffix
|
||||||
.is_empty()
|
.as_str();
|
||||||
&& appservice_info.is_none()
|
|
||||||
{
|
|
||||||
write!(
|
|
||||||
displayname,
|
|
||||||
" {}",
|
|
||||||
self.services
|
|
||||||
.server
|
|
||||||
.config
|
|
||||||
.new_user_displayname_suffix
|
|
||||||
)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
self.services
|
let add_displayname_suffix = !displayname_suffix.is_empty() && !omit_displayname_suffix;
|
||||||
.users
|
|
||||||
.set_displayname(user_id, Some(displayname.clone()));
|
if let Some(displayname) =
|
||||||
|
displayname.or_else(|| add_displayname_suffix.then(|| user_id.localpart()))
|
||||||
|
{
|
||||||
|
// If `new_user_displayname_suffix` is set, registration will push whatever
|
||||||
|
// content is set to the user's display name with a space before it
|
||||||
|
let displayname = format!(
|
||||||
|
"{displayname}{}{}",
|
||||||
|
add_displayname_suffix
|
||||||
|
.then_some(" ")
|
||||||
|
.unwrap_or(""),
|
||||||
|
add_displayname_suffix
|
||||||
|
.then_some(displayname_suffix)
|
||||||
|
.unwrap_or("")
|
||||||
|
);
|
||||||
|
|
||||||
|
self.services
|
||||||
|
.users
|
||||||
|
.set_displayname(user_id, Some(displayname));
|
||||||
|
}
|
||||||
|
|
||||||
// Initial account data
|
// Initial account data
|
||||||
self.services
|
self.services
|
||||||
|
|||||||
Reference in New Issue
Block a user