@ -99,6 +99,8 @@ class UserService {
canChat : true ,
canChat : true ,
canComment : true ,
canComment : true ,
canReport : true ,
canReport : true ,
canAuthorPages : false ,
canAuthorPosts : false ,
} ;
} ;
this . log . info ( 'creating new user account' , { email : userDefinition . email } ) ;
this . log . info ( 'creating new user account' , { email : userDefinition . email } ) ;
@ -112,6 +114,10 @@ class UserService {
}
}
async update ( user , userDefinition ) {
async update ( user , userDefinition ) {
if ( ! user . flags . canLogin ) {
throw SiteError ( 403 , 'Invalid user account operation' ) ;
}
// strip characters we don't want to allow in username
// strip characters we don't want to allow in username
userDefinition . username = striptags ( userDefinition . username . trim ( ) . replace ( /[^A-Za-z0-9\-_]/gi , '' ) ) ;
userDefinition . username = striptags ( userDefinition . username . trim ( ) . replace ( /[^A-Za-z0-9\-_]/gi , '' ) ) ;
const username_lc = userDefinition . username . toLowerCase ( ) ;
const username_lc = userDefinition . username . toLowerCase ( ) ;
@ -120,6 +126,28 @@ class UserService {
userDefinition . bio = striptags ( userDefinition . bio . trim ( ) ) ;
userDefinition . bio = striptags ( userDefinition . bio . trim ( ) ) ;
this . log . info ( 'updating user' , { userDefinition } ) ;
this . log . info ( 'updating user' , { userDefinition } ) ;
await User . updateOne (
{ _ id : user . _ id } ,
{
$set : {
username : userDefinition . username ,
username_lc ,
displayName : userDefinition . displayName ,
bio : userDefinition . bio ,
} ,
} ,
) ;
}
async updateForAdmin ( user , userDefinition ) {
// strip characters we don't want to allow in username
userDefinition . username = striptags ( userDefinition . username . trim ( ) . replace ( /[^A-Za-z0-9\-_]/gi , '' ) ) ;
const username_lc = userDefinition . username . toLowerCase ( ) ;
userDefinition . displayName = striptags ( userDefinition . displayName . trim ( ) ) ;
userDefinition . bio = striptags ( userDefinition . bio . trim ( ) ) ;
this . log . info ( 'updating user for admin' , { userDefinition } ) ;
await User . updateOne (
await User . updateOne (
{ _ id : user . _ id } ,
{ _ id : user . _ id } ,
{
{
@ -134,6 +162,8 @@ class UserService {
'permissions.canChat' : userDefinition . canChat === 'on' ,
'permissions.canChat' : userDefinition . canChat === 'on' ,
'permissions.canComment' : userDefinition . canComment === 'on' ,
'permissions.canComment' : userDefinition . canComment === 'on' ,
'permissions.canReport' : userDefinition . canReport === 'on' ,
'permissions.canReport' : userDefinition . canReport === 'on' ,
'permissions.canAuthorPages' : userDefinition . canAuthorPages === 'on' ,
'permissions.canAuthorPosts' : userDefinition . canAuthorPosts === 'on' ,
} ,
} ,
} ,
} ,
) ;
) ;