aboutsummaryrefslogtreecommitdiffstats
path: root/models/user
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2023-05-21 23:13:47 +0800
committerGitHub <noreply@github.com>2023-05-21 23:13:47 +0800
commitc59a057297c782f44a81a3e630b5094a58099edb (patch)
tree58c3020b0da9755fa769619bb3ad80e656f25cd9 /models/user
parent64f6a5d113da0d5d187752c9398d6e8d22d24b79 (diff)
downloadgitea-c59a057297c782f44a81a3e630b5094a58099edb.tar.gz
gitea-c59a057297c782f44a81a3e630b5094a58099edb.zip
Refactor rename user and rename organization (#24052)
This PR is a refactor at the beginning. And now it did 4 things. - [x] Move renaming organizaiton and user logics into services layer and merged as one function - [x] Support rename a user capitalization only. For example, rename the user from `Lunny` to `lunny`. We just need to change one table `user` and others should not be touched. - [x] Before this PR, some renaming were missed like `agit` - [x] Fix bug the API reutrned from `http.StatusNoContent` to `http.StatusOK`
Diffstat (limited to 'models/user')
-rw-r--r--models/user/error.go38
-rw-r--r--models/user/user.go45
2 files changed, 31 insertions, 52 deletions
diff --git a/models/user/error.go b/models/user/error.go
index 306b9ee9d9..f512994169 100644
--- a/models/user/error.go
+++ b/models/user/error.go
@@ -9,13 +9,6 @@ import (
"code.gitea.io/gitea/modules/util"
)
-// ____ ___
-// | | \______ ___________
-// | | / ___// __ \_ __ \
-// | | /\___ \\ ___/| | \/
-// |______//____ >\___ >__|
-// \/ \/
-
// ErrUserAlreadyExist represents a "user already exists" error.
type ErrUserAlreadyExist struct {
Name string
@@ -99,3 +92,34 @@ func (err ErrUserInactive) Error() string {
func (err ErrUserInactive) Unwrap() error {
return util.ErrPermissionDenied
}
+
+// ErrUserIsNotLocal represents a "ErrUserIsNotLocal" kind of error.
+type ErrUserIsNotLocal struct {
+ UID int64
+ Name string
+}
+
+func (err ErrUserIsNotLocal) Error() string {
+ return fmt.Sprintf("user is not local type [uid: %d, name: %s]", err.UID, err.Name)
+}
+
+// IsErrUserIsNotLocal
+func IsErrUserIsNotLocal(err error) bool {
+ _, ok := err.(ErrUserIsNotLocal)
+ return ok
+}
+
+type ErrUsernameNotChanged struct {
+ UID int64
+ Name string
+}
+
+func (err ErrUsernameNotChanged) Error() string {
+ return fmt.Sprintf("username hasn't been changed[uid: %d, name: %s]", err.UID, err.Name)
+}
+
+// IsErrUsernameNotChanged
+func IsErrUsernameNotChanged(err error) bool {
+ _, ok := err.(ErrUsernameNotChanged)
+ return ok
+}
diff --git a/models/user/user.go b/models/user/user.go
index 46c4440e5f..7428e51065 100644
--- a/models/user/user.go
+++ b/models/user/user.go
@@ -9,7 +9,6 @@ import (
"encoding/hex"
"fmt"
"net/url"
- "os"
"path/filepath"
"strings"
"time"
@@ -756,50 +755,6 @@ func VerifyUserActiveCode(code string) (user *User) {
return nil
}
-// ChangeUserName changes all corresponding setting from old user name to new one.
-func ChangeUserName(ctx context.Context, u *User, newUserName string) (err error) {
- oldUserName := u.Name
- if err = IsUsableUsername(newUserName); err != nil {
- return err
- }
-
- ctx, committer, err := db.TxContext(ctx)
- if err != nil {
- return err
- }
- defer committer.Close()
-
- isExist, err := IsUserExist(ctx, 0, newUserName)
- if err != nil {
- return err
- } else if isExist {
- return ErrUserAlreadyExist{newUserName}
- }
-
- if _, err = db.GetEngine(ctx).Exec("UPDATE `repository` SET owner_name=? WHERE owner_name=?", newUserName, oldUserName); err != nil {
- return fmt.Errorf("Change repo owner name: %w", err)
- }
-
- // Do not fail if directory does not exist
- if err = util.Rename(UserPath(oldUserName), UserPath(newUserName)); err != nil && !os.IsNotExist(err) {
- return fmt.Errorf("Rename user directory: %w", err)
- }
-
- if err = NewUserRedirect(ctx, u.ID, oldUserName, newUserName); err != nil {
- return err
- }
-
- if err = committer.Commit(); err != nil {
- if err2 := util.Rename(UserPath(newUserName), UserPath(oldUserName)); err2 != nil && !os.IsNotExist(err2) {
- log.Critical("Unable to rollback directory change during failed username change from: %s to: %s. DB Error: %v. Filesystem Error: %v", oldUserName, newUserName, err, err2)
- return fmt.Errorf("failed to rollback directory change during failed username change from: %s to: %s. DB Error: %w. Filesystem Error: %v", oldUserName, newUserName, err, err2)
- }
- return err
- }
-
- return nil
-}
-
// checkDupEmail checks whether there are the same email with the user
func checkDupEmail(ctx context.Context, u *User) error {
u.Email = strings.ToLower(u.Email)