feat: return most backend API errors to frontend (#1836)

* feat: return most backend API errros to frontend

Signed-off-by: yehong <239859435@qq.com>

* refactor: reduce int type change

Signed-off-by: yehong <239859435@qq.com>

* feat: return err backend in token.go

Signed-off-by: yehong <239859435@qq.com>

---------

Signed-off-by: yehong <239859435@qq.com>
This commit is contained in:
yehong
2023-05-30 15:49:39 +08:00
committed by GitHub
parent 34151c0095
commit 02e692a300
105 changed files with 3788 additions and 1734 deletions

View File

@ -70,92 +70,102 @@ type Organization struct {
AccountItems []*AccountItem `xorm:"varchar(3000)" json:"accountItems"`
}
func GetOrganizationCount(owner, field, value string) int {
func GetOrganizationCount(owner, field, value string) (int64, error) {
session := GetSession(owner, -1, -1, field, value, "", "")
count, err := session.Count(&Organization{})
if err != nil {
panic(err)
}
return int(count)
return session.Count(&Organization{})
}
func GetOrganizations(owner string) []*Organization {
func GetOrganizations(owner string) ([]*Organization, error) {
organizations := []*Organization{}
err := adapter.Engine.Desc("created_time").Find(&organizations, &Organization{Owner: owner})
if err != nil {
panic(err)
return nil, err
}
return organizations
return organizations, nil
}
func GetOrganizationsByFields(owner string, fields ...string) []*Organization {
func GetOrganizationsByFields(owner string, fields ...string) ([]*Organization, error) {
organizations := []*Organization{}
err := adapter.Engine.Desc("created_time").Cols(fields...).Find(&organizations, &Organization{Owner: owner})
if err != nil {
panic(err)
return nil, err
}
return organizations
return organizations, nil
}
func GetPaginationOrganizations(owner string, offset, limit int, field, value, sortField, sortOrder string) []*Organization {
func GetPaginationOrganizations(owner string, offset, limit int, field, value, sortField, sortOrder string) ([]*Organization, error) {
organizations := []*Organization{}
session := GetSession(owner, offset, limit, field, value, sortField, sortOrder)
err := session.Find(&organizations)
if err != nil {
panic(err)
return nil, err
}
return organizations
return organizations, nil
}
func getOrganization(owner string, name string) *Organization {
func getOrganization(owner string, name string) (*Organization, error) {
if owner == "" || name == "" {
return nil
return nil, nil
}
organization := Organization{Owner: owner, Name: name}
existed, err := adapter.Engine.Get(&organization)
if err != nil {
panic(err)
return nil, err
}
if existed {
return &organization
return &organization, nil
}
return nil
return nil, nil
}
func GetOrganization(id string) *Organization {
func GetOrganization(id string) (*Organization, error) {
owner, name := util.GetOwnerAndNameFromId(id)
return getOrganization(owner, name)
}
func GetMaskedOrganization(organization *Organization) *Organization {
func GetMaskedOrganization(organization *Organization, errs ...error) (*Organization, error) {
if len(errs) > 0 && errs[0] != nil {
return nil, errs[0]
}
if organization == nil {
return nil
return nil, nil
}
if organization.MasterPassword != "" {
organization.MasterPassword = "***"
}
return organization
return organization, nil
}
func GetMaskedOrganizations(organizations []*Organization) []*Organization {
for _, organization := range organizations {
organization = GetMaskedOrganization(organization)
func GetMaskedOrganizations(organizations []*Organization, errs ...error) ([]*Organization, error) {
if len(errs) > 0 && errs[0] != nil {
return nil, errs[0]
}
return organizations
var err error
for _, organization := range organizations {
organization, err = GetMaskedOrganization(organization)
if err != nil {
return nil, err
}
}
return organizations, nil
}
func UpdateOrganization(id string, organization *Organization) bool {
func UpdateOrganization(id string, organization *Organization) (bool, error) {
owner, name := util.GetOwnerAndNameFromId(id)
if getOrganization(owner, name) == nil {
return false
if org, err := getOrganization(owner, name); err != nil {
return false, err
} else if org == nil {
return false, nil
}
if name == "built-in" {
@ -165,7 +175,7 @@ func UpdateOrganization(id string, organization *Organization) bool {
if name != organization.Name {
err := organizationChangeTrigger(name, organization.Name)
if err != nil {
return false
return false, nil
}
}
@ -183,35 +193,35 @@ func UpdateOrganization(id string, organization *Organization) bool {
}
affected, err := session.Update(organization)
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func AddOrganization(organization *Organization) bool {
func AddOrganization(organization *Organization) (bool, error) {
affected, err := adapter.Engine.Insert(organization)
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func DeleteOrganization(organization *Organization) bool {
func DeleteOrganization(organization *Organization) (bool, error) {
if organization.Name == "built-in" {
return false
return false, nil
}
affected, err := adapter.Engine.ID(core.PK{organization.Owner, organization.Name}).Delete(&Organization{})
if err != nil {
panic(err)
return false, err
}
return affected != 0
return affected != 0, nil
}
func GetOrganizationByUser(user *User) *Organization {
func GetOrganizationByUser(user *User) (*Organization, error) {
return getOrganization("admin", user.Owner)
}
@ -248,13 +258,21 @@ func CheckAccountItemModifyRule(accountItem *AccountItem, isAdmin bool, lang str
}
func GetDefaultApplication(id string) (*Application, error) {
organization := GetOrganization(id)
organization, err := GetOrganization(id)
if err != nil {
return nil, err
}
if organization == nil {
return nil, fmt.Errorf("The organization: %s does not exist", id)
}
if organization.DefaultApplication != "" {
defaultApplication := getApplication("admin", organization.DefaultApplication)
defaultApplication, err := getApplication("admin", organization.DefaultApplication)
if err != nil {
return nil, err
}
if defaultApplication == nil {
return nil, fmt.Errorf("The default application: %s does not exist", organization.DefaultApplication)
} else {
@ -263,9 +281,9 @@ func GetDefaultApplication(id string) (*Application, error) {
}
applications := []*Application{}
err := adapter.Engine.Asc("created_time").Find(&applications, &Application{Organization: organization.Name})
err = adapter.Engine.Asc("created_time").Find(&applications, &Application{Organization: organization.Name})
if err != nil {
panic(err)
return nil, err
}
if len(applications) == 0 {
@ -280,8 +298,15 @@ func GetDefaultApplication(id string) (*Application, error) {
}
}
extendApplicationWithProviders(defaultApplication)
extendApplicationWithOrg(defaultApplication)
err = extendApplicationWithProviders(defaultApplication)
if err != nil {
return nil, err
}
err = extendApplicationWithOrg(defaultApplication)
if err != nil {
return nil, err
}
return defaultApplication, nil
}