@@ -863,26 +863,36 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
863863 return err
864864 }
865865
866+ // set system defaults
867+ u .KeepEmailPrivate = setting .Service .DefaultKeepEmailPrivate
868+ u .Visibility = setting .Service .DefaultUserVisibilityMode
869+ u .AllowCreateOrganization = setting .Service .DefaultAllowCreateOrganization && ! setting .Admin .DisableRegularOrgCreation
870+ u .EmailNotificationsPreference = setting .Admin .DefaultEmailNotification
871+ u .MaxRepoCreation = - 1
872+ u .Theme = setting .UI .DefaultTheme
873+
874+ // overwrite defaults if set
875+ if len (overwriteDefault ) != 0 && overwriteDefault [0 ] != nil {
876+ u .Visibility = overwriteDefault [0 ].Visibility
877+ }
878+
866879 sess := x .NewSession ()
867880 defer sess .Close ()
868881 if err = sess .Begin (); err != nil {
869882 return err
870883 }
871884
872- isExist , err := isUserExist (sess , 0 , u .Name )
873- if err != nil {
874- return err
875- } else if isExist {
876- return ErrUserAlreadyExist {u .Name }
877- }
885+ // validate data
878886
879- if err = deleteUserRedirect ( sess , u . Name ); err != nil {
887+ if err := validateUser ( u ); err != nil {
880888 return err
881889 }
882890
883- u . Email = strings . ToLower ( u . Email )
884- if err = ValidateEmail ( u . Email ); err != nil {
891+ isExist , err := isUserExist ( sess , 0 , u . Name )
892+ if err != nil {
885893 return err
894+ } else if isExist {
895+ return ErrUserAlreadyExist {u .Name }
886896 }
887897
888898 isExist , err = isEmailUsed (sess , u .Email )
@@ -892,6 +902,8 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
892902 return ErrEmailAlreadyUsed {u .Email }
893903 }
894904
905+ // prepare for database
906+
895907 u .LowerName = strings .ToLower (u .Name )
896908 u .AvatarEmail = u .Email
897909 if u .Rands , err = GetUserSalt (); err != nil {
@@ -901,16 +913,10 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
901913 return err
902914 }
903915
904- // set system defaults
905- u .KeepEmailPrivate = setting .Service .DefaultKeepEmailPrivate
906- u .Visibility = setting .Service .DefaultUserVisibilityMode
907- u .AllowCreateOrganization = setting .Service .DefaultAllowCreateOrganization && ! setting .Admin .DisableRegularOrgCreation
908- u .EmailNotificationsPreference = setting .Admin .DefaultEmailNotification
909- u .MaxRepoCreation = - 1
910- u .Theme = setting .UI .DefaultTheme
911- // overwrite defaults if set
912- if len (overwriteDefault ) != 0 && overwriteDefault [0 ] != nil {
913- u .Visibility = overwriteDefault [0 ].Visibility
916+ // save changes to database
917+
918+ if err = deleteUserRedirect (sess , u .Name ); err != nil {
919+ return err
914920 }
915921
916922 if _ , err = sess .Insert (u ); err != nil {
@@ -1056,12 +1062,22 @@ func checkDupEmail(e Engine, u *User) error {
10561062 return nil
10571063}
10581064
1059- func updateUser (e Engine , u * User ) (err error ) {
1065+ // validateUser check if user is valide to insert / update into database
1066+ func validateUser (u * User ) error {
1067+ if ! setting .Service .AllowedUserVisibilityModesSlice .IsAllowedVisibility (u .Visibility ) {
1068+ return fmt .Errorf ("visibility Mode not allowed: %s" , u .Visibility .String ())
1069+ }
1070+
10601071 u .Email = strings .ToLower (u .Email )
1061- if err = ValidateEmail (u .Email ); err != nil {
1072+ return ValidateEmail (u .Email )
1073+ }
1074+
1075+ func updateUser (e Engine , u * User ) error {
1076+ if err := validateUser (u ); err != nil {
10621077 return err
10631078 }
1064- _ , err = e .ID (u .ID ).AllCols ().Update (u )
1079+
1080+ _ , err := e .ID (u .ID ).AllCols ().Update (u )
10651081 return err
10661082}
10671083
@@ -1076,6 +1092,10 @@ func UpdateUserCols(u *User, cols ...string) error {
10761092}
10771093
10781094func updateUserCols (e Engine , u * User , cols ... string ) error {
1095+ if err := validateUser (u ); err != nil {
1096+ return err
1097+ }
1098+
10791099 _ , err := e .ID (u .ID ).Cols (cols ... ).Update (u )
10801100 return err
10811101}
0 commit comments