forked from NYANDEV/forgejo
#3515 use alert instead 500 for duplicated login source name
This commit is contained in:
parent
cd9b926af7
commit
99c2ae7b35
7 changed files with 47 additions and 23 deletions
|
@ -1028,6 +1028,7 @@ auths.delete_auth_title = Authentication Deletion
|
||||||
auths.delete_auth_desc = This authentication is going to be deleted, do you want to continue?
|
auths.delete_auth_desc = This authentication is going to be deleted, do you want to continue?
|
||||||
auths.still_in_used = This authentication is still used by some users, please delete or convert these users to another login type first.
|
auths.still_in_used = This authentication is still used by some users, please delete or convert these users to another login type first.
|
||||||
auths.deletion_success = Authentication has been deleted successfully!
|
auths.deletion_success = Authentication has been deleted successfully!
|
||||||
|
auths.login_source_exist = Login source '%s' already exists.
|
||||||
|
|
||||||
config.server_config = Server Configuration
|
config.server_config = Server Configuration
|
||||||
config.app_name = Application Name
|
config.app_name = Application Name
|
||||||
|
|
|
@ -602,24 +602,37 @@ func (err ErrAttachmentNotExist) Error() string {
|
||||||
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// _____ __ .__ __ .__ __ .__
|
// .____ .__ _________
|
||||||
// / _ \ __ ___/ |_| |__ ____ _____/ |_|__| ____ _____ _/ |_|__| ____ ____
|
// | | ____ ____ |__| ____ / _____/ ____ __ _________ ____ ____
|
||||||
// / /_\ \| | \ __\ | \_/ __ \ / \ __\ |/ ___\\__ \\ __\ |/ _ \ / \
|
// | | / _ \ / ___\| |/ \ \_____ \ / _ \| | \_ __ \_/ ___\/ __ \
|
||||||
// / | \ | /| | | Y \ ___/| | \ | | \ \___ / __ \| | | ( <_> ) | \
|
// | |__( <_> ) /_/ > | | \ / ( <_> ) | /| | \/\ \__\ ___/
|
||||||
// \____|__ /____/ |__| |___| /\___ >___| /__| |__|\___ >____ /__| |__|\____/|___| /
|
// |_______ \____/\___ /|__|___| / /_______ /\____/|____/ |__| \___ >___ >
|
||||||
// \/ \/ \/ \/ \/ \/ \/
|
// \/ /_____/ \/ \/ \/ \/
|
||||||
|
|
||||||
type ErrAuthenticationNotExist struct {
|
type ErrLoginSourceNotExist struct {
|
||||||
ID int64
|
ID int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsErrAuthenticationNotExist(err error) bool {
|
func IsErrLoginSourceNotExist(err error) bool {
|
||||||
_, ok := err.(ErrAuthenticationNotExist)
|
_, ok := err.(ErrLoginSourceNotExist)
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func (err ErrAuthenticationNotExist) Error() string {
|
func (err ErrLoginSourceNotExist) Error() string {
|
||||||
return fmt.Sprintf("authentication does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("login source does not exist [id: %d]", err.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ErrLoginSourceAlreadyExist struct {
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsErrLoginSourceAlreadyExist(err error) bool {
|
||||||
|
_, ok := err.(ErrLoginSourceAlreadyExist)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrLoginSourceAlreadyExist) Error() string {
|
||||||
|
return fmt.Sprintf("login source already exists [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ___________
|
// ___________
|
||||||
|
|
|
@ -25,7 +25,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrAuthenticationAlreadyExist = errors.New("Authentication already exist")
|
|
||||||
ErrAuthenticationUserUsed = errors.New("Authentication has been used by some users")
|
ErrAuthenticationUserUsed = errors.New("Authentication has been used by some users")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -230,8 +229,15 @@ func CountLoginSources() int64 {
|
||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateSource(source *LoginSource) error {
|
func CreateLoginSource(source *LoginSource) error {
|
||||||
_, err := x.Insert(source)
|
has, err := x.Get(&LoginSource{Name: source.Name})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if has {
|
||||||
|
return ErrLoginSourceAlreadyExist{source.Name}
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = x.Insert(source)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +253,7 @@ func GetLoginSourceByID(id int64) (*LoginSource, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return nil, ErrAuthenticationNotExist{id}
|
return nil, ErrLoginSourceNotExist{id}
|
||||||
}
|
}
|
||||||
return source, nil
|
return source, nil
|
||||||
}
|
}
|
||||||
|
@ -542,7 +548,7 @@ func UserSignIn(uname, passwd string) (*User, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if !hasSource {
|
} else if !hasSource {
|
||||||
return nil, ErrLoginSourceNotExist
|
return nil, ErrLoginSourceNotExist{u.LoginSource}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExternalUserLogin(u, u.LoginName, passwd, &source, false)
|
return ExternalUserLogin(u, u.LoginName, passwd, &source, false)
|
||||||
|
|
|
@ -46,7 +46,6 @@ var (
|
||||||
ErrEmailNotExist = errors.New("E-mail does not exist")
|
ErrEmailNotExist = errors.New("E-mail does not exist")
|
||||||
ErrEmailNotActivated = errors.New("E-mail address has not been activated")
|
ErrEmailNotActivated = errors.New("E-mail address has not been activated")
|
||||||
ErrUserNameIllegal = errors.New("User name contains illegal characters")
|
ErrUserNameIllegal = errors.New("User name contains illegal characters")
|
||||||
ErrLoginSourceNotExist = errors.New("Login source does not exist")
|
|
||||||
ErrLoginSourceNotActived = errors.New("Login source is not actived")
|
ErrLoginSourceNotActived = errors.New("Login source is not actived")
|
||||||
ErrUnsupportedLoginType = errors.New("Login source is unknown")
|
ErrUnsupportedLoginType = errors.New("Login source is unknown")
|
||||||
)
|
)
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -146,13 +146,18 @@ func NewAuthSourcePost(ctx *context.Context, form auth.AuthenticationForm) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := models.CreateSource(&models.LoginSource{
|
if err := models.CreateLoginSource(&models.LoginSource{
|
||||||
Type: models.LoginType(form.Type),
|
Type: models.LoginType(form.Type),
|
||||||
Name: form.Name,
|
Name: form.Name,
|
||||||
IsActived: form.IsActive,
|
IsActived: form.IsActive,
|
||||||
Cfg: config,
|
Cfg: config,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
|
if models.IsErrLoginSourceAlreadyExist(err) {
|
||||||
|
ctx.Data["Err_Name"] = true
|
||||||
|
ctx.RenderWithErr(ctx.Tr("admin.auths.login_source_exist", err.(models.ErrLoginSourceAlreadyExist).Name), AUTH_NEW, form)
|
||||||
|
} else {
|
||||||
ctx.Handle(500, "CreateSource", err)
|
ctx.Handle(500, "CreateSource", err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ func parseLoginSource(ctx *context.APIContext, u *models.User, sourceID int64, l
|
||||||
|
|
||||||
source, err := models.GetLoginSourceByID(sourceID)
|
source, err := models.GetLoginSourceByID(sourceID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrAuthenticationNotExist(err) {
|
if models.IsErrLoginSourceNotExist(err) {
|
||||||
ctx.Error(422, "", err)
|
ctx.Error(422, "", err)
|
||||||
} else {
|
} else {
|
||||||
ctx.Error(500, "GetLoginSourceByID", err)
|
ctx.Error(500, "GetLoginSourceByID", err)
|
||||||
|
|
Loading…
Reference in a new issue