@@ -863,26 +863,36 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
863
863
return err
864
864
}
865
865
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
+
866
879
sess := x .NewSession ()
867
880
defer sess .Close ()
868
881
if err = sess .Begin (); err != nil {
869
882
return err
870
883
}
871
884
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
878
886
879
- if err = deleteUserRedirect ( sess , u . Name ); err != nil {
887
+ if err := validateUser ( u ); err != nil {
880
888
return err
881
889
}
882
890
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 {
885
893
return err
894
+ } else if isExist {
895
+ return ErrUserAlreadyExist {u .Name }
886
896
}
887
897
888
898
isExist , err = isEmailUsed (sess , u .Email )
@@ -892,6 +902,8 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
892
902
return ErrEmailAlreadyUsed {u .Email }
893
903
}
894
904
905
+ // prepare for database
906
+
895
907
u .LowerName = strings .ToLower (u .Name )
896
908
u .AvatarEmail = u .Email
897
909
if u .Rands , err = GetUserSalt (); err != nil {
@@ -901,16 +913,10 @@ func CreateUser(u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err e
901
913
return err
902
914
}
903
915
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
914
920
}
915
921
916
922
if _ , err = sess .Insert (u ); err != nil {
@@ -1056,12 +1062,22 @@ func checkDupEmail(e Engine, u *User) error {
1056
1062
return nil
1057
1063
}
1058
1064
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
+
1060
1071
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 {
1062
1077
return err
1063
1078
}
1064
- _ , err = e .ID (u .ID ).AllCols ().Update (u )
1079
+
1080
+ _ , err := e .ID (u .ID ).AllCols ().Update (u )
1065
1081
return err
1066
1082
}
1067
1083
@@ -1076,6 +1092,10 @@ func UpdateUserCols(u *User, cols ...string) error {
1076
1092
}
1077
1093
1078
1094
func updateUserCols (e Engine , u * User , cols ... string ) error {
1095
+ if err := validateUser (u ); err != nil {
1096
+ return err
1097
+ }
1098
+
1079
1099
_ , err := e .ID (u .ID ).Cols (cols ... ).Update (u )
1080
1100
return err
1081
1101
}
0 commit comments