forked from Shiloh/githaven
f8b471ace1
Fixes #28660 Fixes an admin api bug related to `user.LoginSource` Fixed `/user/emails` response not identical to GitHub api This PR unifies the user update methods. The goal is to keep the logic only at one place (having audit logs in mind). For example, do the password checks only in one method not everywhere a password is updated. After that PR is merged, the user creation should be next.
111 lines
2.7 KiB
Go
111 lines
2.7 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package user
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"code.gitea.io/gitea/modules/util"
|
|
)
|
|
|
|
// ErrUserAlreadyExist represents a "user already exists" error.
|
|
type ErrUserAlreadyExist struct {
|
|
Name string
|
|
}
|
|
|
|
// IsErrUserAlreadyExist checks if an error is a ErrUserAlreadyExists.
|
|
func IsErrUserAlreadyExist(err error) bool {
|
|
_, ok := err.(ErrUserAlreadyExist)
|
|
return ok
|
|
}
|
|
|
|
func (err ErrUserAlreadyExist) Error() string {
|
|
return fmt.Sprintf("user already exists [name: %s]", err.Name)
|
|
}
|
|
|
|
// Unwrap unwraps this error as a ErrExist error
|
|
func (err ErrUserAlreadyExist) Unwrap() error {
|
|
return util.ErrAlreadyExist
|
|
}
|
|
|
|
// ErrUserNotExist represents a "UserNotExist" kind of error.
|
|
type ErrUserNotExist struct {
|
|
UID int64
|
|
Name string
|
|
KeyID int64
|
|
}
|
|
|
|
// IsErrUserNotExist checks if an error is a ErrUserNotExist.
|
|
func IsErrUserNotExist(err error) bool {
|
|
_, ok := err.(ErrUserNotExist)
|
|
return ok
|
|
}
|
|
|
|
func (err ErrUserNotExist) Error() string {
|
|
return fmt.Sprintf("user does not exist [uid: %d, name: %s, keyid: %d]", err.UID, err.Name, err.KeyID)
|
|
}
|
|
|
|
// Unwrap unwraps this error as a ErrNotExist error
|
|
func (err ErrUserNotExist) Unwrap() error {
|
|
return util.ErrNotExist
|
|
}
|
|
|
|
// ErrUserProhibitLogin represents a "ErrUserProhibitLogin" kind of error.
|
|
type ErrUserProhibitLogin struct {
|
|
UID int64
|
|
Name string
|
|
}
|
|
|
|
// IsErrUserProhibitLogin checks if an error is a ErrUserProhibitLogin
|
|
func IsErrUserProhibitLogin(err error) bool {
|
|
_, ok := err.(ErrUserProhibitLogin)
|
|
return ok
|
|
}
|
|
|
|
func (err ErrUserProhibitLogin) Error() string {
|
|
return fmt.Sprintf("user is not allowed login [uid: %d, name: %s]", err.UID, err.Name)
|
|
}
|
|
|
|
// Unwrap unwraps this error as a ErrPermission error
|
|
func (err ErrUserProhibitLogin) Unwrap() error {
|
|
return util.ErrPermissionDenied
|
|
}
|
|
|
|
// ErrUserInactive represents a "ErrUserInactive" kind of error.
|
|
type ErrUserInactive struct {
|
|
UID int64
|
|
Name string
|
|
}
|
|
|
|
// IsErrUserInactive checks if an error is a ErrUserInactive
|
|
func IsErrUserInactive(err error) bool {
|
|
_, ok := err.(ErrUserInactive)
|
|
return ok
|
|
}
|
|
|
|
func (err ErrUserInactive) Error() string {
|
|
return fmt.Sprintf("user is inactive [uid: %d, name: %s]", err.UID, err.Name)
|
|
}
|
|
|
|
// Unwrap unwraps this error as a ErrPermission error
|
|
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
|
|
}
|