diff --git a/controllers/account.go b/controllers/account.go index 33ba7ad2..754336a9 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -105,7 +105,8 @@ func (c *ApiController) Signup() { var form RequestForm err := json.Unmarshal(c.Ctx.Input.RequestBody, &form) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application)) @@ -156,6 +157,12 @@ func (c *ApiController) Signup() { username = id } + initScore, err := getInitScore() + if err != nil { + c.ResponseError(fmt.Errorf("get init score failed, error: %w", err).Error()) + return + } + user := &object.User{ Owner: form.Organization, Name: username, @@ -171,7 +178,7 @@ func (c *ApiController) Signup() { Affiliation: form.Affiliation, IdCard: form.IdCard, Region: form.Region, - Score: getInitScore(), + Score: initScore, IsAdmin: false, IsGlobalAdmin: false, IsForbidden: false, diff --git a/controllers/application.go b/controllers/application.go index 93c55901..518f07e8 100644 --- a/controllers/application.go +++ b/controllers/application.go @@ -111,8 +111,7 @@ func (c *ApiController) GetOrganizationApplications() { return } - var applications []*object.Application - applications = object.GetApplicationsByOrganizationName(owner, organization) + applications := object.GetApplicationsByOrganizationName(owner, organization) c.Data["json"] = object.GetMaskedApplications(applications, userId) c.ServeJSON() } @@ -131,7 +130,8 @@ func (c *ApiController) UpdateApplication() { var application object.Application err := json.Unmarshal(c.Ctx.Input.RequestBody, &application) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateApplication(id, &application)) @@ -149,7 +149,8 @@ func (c *ApiController) AddApplication() { var application object.Application err := json.Unmarshal(c.Ctx.Input.RequestBody, &application) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddApplication(&application)) @@ -167,7 +168,8 @@ func (c *ApiController) DeleteApplication() { var application object.Application err := json.Unmarshal(c.Ctx.Input.RequestBody, &application) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteApplication(&application)) diff --git a/controllers/auth.go b/controllers/auth.go index 2050d0cd..1ce5ea6e 100644 --- a/controllers/auth.go +++ b/controllers/auth.go @@ -344,7 +344,7 @@ func (c *ApiController) Login() { user = object.GetUserByField(application.Organization, provider.Type, userInfo.Id) } - if user != nil && user.IsDeleted == false { + if user != nil && !user.IsDeleted { // Sign in via OAuth (want to sign up but already have account) if user.IsForbidden { @@ -384,6 +384,12 @@ func (c *ApiController) Login() { properties := map[string]string{} properties["no"] = strconv.Itoa(len(object.GetUsers(application.Organization)) + 2) + initScore, err := getInitScore() + if err != nil { + c.ResponseError(fmt.Errorf("get init score failed, error: %w", err).Error()) + return + } + user = &object.User{ Owner: application.Organization, Name: userInfo.Username, @@ -394,7 +400,7 @@ func (c *ApiController) Login() { Avatar: userInfo.AvatarUrl, Address: []string{}, Email: userInfo.Email, - Score: getInitScore(), + Score: initScore, IsAdmin: false, IsGlobalAdmin: false, IsForbidden: false, diff --git a/controllers/base.go b/controllers/base.go index 893f84ea..7d7153a5 100644 --- a/controllers/base.go +++ b/controllers/base.go @@ -19,6 +19,7 @@ import ( "time" "github.com/astaxie/beego" + "github.com/astaxie/beego/logs" "github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/util" ) @@ -58,6 +59,7 @@ func (c *ApiController) IsGlobalAdmin() bool { func (c *ApiController) GetSessionUsername() string { // check if user session expired sessionData := c.GetSessionData() + if sessionData != nil && sessionData.ExpireTime != 0 && sessionData.ExpireTime < time.Now().Unix() { @@ -120,7 +122,8 @@ func (c *ApiController) GetSessionData() *SessionData { sessionData := &SessionData{} err := util.JsonToStruct(session.(string), sessionData) if err != nil { - panic(err) + logs.Error("GetSessionData failed, error: %s", err) + return nil } return sessionData diff --git a/controllers/cert.go b/controllers/cert.go index 361312e5..2f1882ad 100644 --- a/controllers/cert.go +++ b/controllers/cert.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateCert() { var cert object.Cert err := json.Unmarshal(c.Ctx.Input.RequestBody, &cert) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateCert(id, &cert)) @@ -94,7 +95,8 @@ func (c *ApiController) AddCert() { var cert object.Cert err := json.Unmarshal(c.Ctx.Input.RequestBody, &cert) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddCert(&cert)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteCert() { var cert object.Cert err := json.Unmarshal(c.Ctx.Input.RequestBody, &cert) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteCert(&cert)) diff --git a/controllers/enforcer.go b/controllers/enforcer.go index 47d38001..5b0184ce 100644 --- a/controllers/enforcer.go +++ b/controllers/enforcer.go @@ -30,7 +30,8 @@ func (c *ApiController) Enforce() { var permissionRule object.PermissionRule err := json.Unmarshal(c.Ctx.Input.RequestBody, &permissionRule) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = object.Enforce(userId, &permissionRule) @@ -47,7 +48,8 @@ func (c *ApiController) BatchEnforce() { var permissionRules []object.PermissionRule err := json.Unmarshal(c.Ctx.Input.RequestBody, &permissionRules) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = object.BatchEnforce(userId, permissionRules) diff --git a/controllers/ldap.go b/controllers/ldap.go index 9aa96c2a..4d08dd08 100644 --- a/controllers/ldap.go +++ b/controllers/ldap.go @@ -199,7 +199,8 @@ func (c *ApiController) DeleteLdap() { var ldap object.Ldap err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldap) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } object.GetLdapAutoSynchronizer().StopAutoSync(ldap.Id) @@ -217,7 +218,8 @@ func (c *ApiController) SyncLdapUsers() { var users []object.LdapRespUser err := json.Unmarshal(c.Ctx.Input.RequestBody, &users) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } object.UpdateLdapSyncTime(ldapId) @@ -239,7 +241,8 @@ func (c *ApiController) CheckLdapUsersExist() { var uuids []string err := json.Unmarshal(c.Ctx.Input.RequestBody, &uuids) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } exist := object.CheckLdapUuidExist(owner, uuids) diff --git a/controllers/link.go b/controllers/link.go index db23a0dc..7fe8ca80 100644 --- a/controllers/link.go +++ b/controllers/link.go @@ -37,7 +37,8 @@ func (c *ApiController) Unlink() { var form LinkForm err := json.Unmarshal(c.Ctx.Input.RequestBody, &form) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } providerType := form.ProviderType diff --git a/controllers/model.go b/controllers/model.go index 8d0601ef..682bcd23 100644 --- a/controllers/model.go +++ b/controllers/model.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateModel() { var model object.Model err := json.Unmarshal(c.Ctx.Input.RequestBody, &model) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateModel(id, &model)) @@ -94,7 +95,8 @@ func (c *ApiController) AddModel() { var model object.Model err := json.Unmarshal(c.Ctx.Input.RequestBody, &model) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddModel(&model)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteModel() { var model object.Model err := json.Unmarshal(c.Ctx.Input.RequestBody, &model) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteModel(&model)) diff --git a/controllers/organization.go b/controllers/organization.go index 6df8c4e2..948efbfb 100644 --- a/controllers/organization.go +++ b/controllers/organization.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateOrganization() { var organization object.Organization err := json.Unmarshal(c.Ctx.Input.RequestBody, &organization) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateOrganization(id, &organization)) @@ -94,7 +95,8 @@ func (c *ApiController) AddOrganization() { var organization object.Organization err := json.Unmarshal(c.Ctx.Input.RequestBody, &organization) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddOrganization(&organization)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteOrganization() { var organization object.Organization err := json.Unmarshal(c.Ctx.Input.RequestBody, &organization) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteOrganization(&organization)) diff --git a/controllers/payment.go b/controllers/payment.go index 596d2809..e3c52608 100644 --- a/controllers/payment.go +++ b/controllers/payment.go @@ -95,7 +95,8 @@ func (c *ApiController) UpdatePayment() { var payment object.Payment err := json.Unmarshal(c.Ctx.Input.RequestBody, &payment) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdatePayment(id, &payment)) @@ -113,7 +114,8 @@ func (c *ApiController) AddPayment() { var payment object.Payment err := json.Unmarshal(c.Ctx.Input.RequestBody, &payment) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddPayment(&payment)) @@ -131,7 +133,8 @@ func (c *ApiController) DeletePayment() { var payment object.Payment err := json.Unmarshal(c.Ctx.Input.RequestBody, &payment) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeletePayment(&payment)) @@ -157,7 +160,8 @@ func (c *ApiController) NotifyPayment() { if ok { _, err := c.Ctx.ResponseWriter.Write([]byte("success")) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } } else { panic(fmt.Errorf("NotifyPayment() failed: %v", ok)) diff --git a/controllers/permission.go b/controllers/permission.go index 2dd40f1c..6929eadf 100644 --- a/controllers/permission.go +++ b/controllers/permission.go @@ -94,7 +94,8 @@ func (c *ApiController) UpdatePermission() { var permission object.Permission err := json.Unmarshal(c.Ctx.Input.RequestBody, &permission) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdatePermission(id, &permission)) @@ -112,7 +113,8 @@ func (c *ApiController) AddPermission() { var permission object.Permission err := json.Unmarshal(c.Ctx.Input.RequestBody, &permission) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddPermission(&permission)) @@ -130,7 +132,8 @@ func (c *ApiController) DeletePermission() { var permission object.Permission err := json.Unmarshal(c.Ctx.Input.RequestBody, &permission) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeletePermission(&permission)) diff --git a/controllers/product.go b/controllers/product.go index a267ddd3..e37469af 100644 --- a/controllers/product.go +++ b/controllers/product.go @@ -80,7 +80,8 @@ func (c *ApiController) UpdateProduct() { var product object.Product err := json.Unmarshal(c.Ctx.Input.RequestBody, &product) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateProduct(id, &product)) @@ -98,7 +99,8 @@ func (c *ApiController) AddProduct() { var product object.Product err := json.Unmarshal(c.Ctx.Input.RequestBody, &product) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddProduct(&product)) @@ -116,7 +118,8 @@ func (c *ApiController) DeleteProduct() { var product object.Product err := json.Unmarshal(c.Ctx.Input.RequestBody, &product) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteProduct(&product)) diff --git a/controllers/provider.go b/controllers/provider.go index ec4c73d2..7f00ed67 100644 --- a/controllers/provider.go +++ b/controllers/provider.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateProvider() { var provider object.Provider err := json.Unmarshal(c.Ctx.Input.RequestBody, &provider) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateProvider(id, &provider)) @@ -94,7 +95,8 @@ func (c *ApiController) AddProvider() { var provider object.Provider err := json.Unmarshal(c.Ctx.Input.RequestBody, &provider) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddProvider(&provider)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteProvider() { var provider object.Provider err := json.Unmarshal(c.Ctx.Input.RequestBody, &provider) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteProvider(&provider)) diff --git a/controllers/record.go b/controllers/record.go index 6bbb5fcc..673a6e70 100644 --- a/controllers/record.go +++ b/controllers/record.go @@ -59,7 +59,8 @@ func (c *ApiController) GetRecordsByFilter() { record := &object.Record{} err := util.JsonToStruct(body, record) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = object.GetRecordsByField(record) diff --git a/controllers/resource.go b/controllers/resource.go index 55d8da5e..da7469a0 100644 --- a/controllers/resource.go +++ b/controllers/resource.go @@ -72,7 +72,8 @@ func (c *ApiController) UpdateResource() { var resource object.Resource err := json.Unmarshal(c.Ctx.Input.RequestBody, &resource) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateResource(id, &resource)) @@ -87,7 +88,8 @@ func (c *ApiController) AddResource() { var resource object.Resource err := json.Unmarshal(c.Ctx.Input.RequestBody, &resource) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddResource(&resource)) @@ -102,7 +104,8 @@ func (c *ApiController) DeleteResource() { var resource object.Resource err := json.Unmarshal(c.Ctx.Input.RequestBody, &resource) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } provider, _, ok := c.GetProviderFromContext("Storage") diff --git a/controllers/role.go b/controllers/role.go index ca46a148..b9870551 100644 --- a/controllers/role.go +++ b/controllers/role.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateRole() { var role object.Role err := json.Unmarshal(c.Ctx.Input.RequestBody, &role) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateRole(id, &role)) @@ -94,7 +95,8 @@ func (c *ApiController) AddRole() { var role object.Role err := json.Unmarshal(c.Ctx.Input.RequestBody, &role) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddRole(&role)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteRole() { var role object.Role err := json.Unmarshal(c.Ctx.Input.RequestBody, &role) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteRole(&role)) diff --git a/controllers/syncer.go b/controllers/syncer.go index 127d1eef..22dab5e4 100644 --- a/controllers/syncer.go +++ b/controllers/syncer.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateSyncer() { var syncer object.Syncer err := json.Unmarshal(c.Ctx.Input.RequestBody, &syncer) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateSyncer(id, &syncer)) @@ -94,7 +95,8 @@ func (c *ApiController) AddSyncer() { var syncer object.Syncer err := json.Unmarshal(c.Ctx.Input.RequestBody, &syncer) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddSyncer(&syncer)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteSyncer() { var syncer object.Syncer err := json.Unmarshal(c.Ctx.Input.RequestBody, &syncer) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteSyncer(&syncer)) diff --git a/controllers/token.go b/controllers/token.go index abf46901..8492c42e 100644 --- a/controllers/token.go +++ b/controllers/token.go @@ -79,7 +79,8 @@ func (c *ApiController) UpdateToken() { var token object.Token err := json.Unmarshal(c.Ctx.Input.RequestBody, &token) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateToken(id, &token)) @@ -97,7 +98,8 @@ func (c *ApiController) AddToken() { var token object.Token err := json.Unmarshal(c.Ctx.Input.RequestBody, &token) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddToken(&token)) @@ -115,7 +117,8 @@ func (c *ApiController) DeleteToken() { var token object.Token err := json.Unmarshal(c.Ctx.Input.RequestBody, &token) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteToken(&token)) diff --git a/controllers/user.go b/controllers/user.go index 7b65c4d7..89ec4774 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -149,7 +149,8 @@ func (c *ApiController) UpdateUser() { var user object.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } if user.DisplayName == "" { @@ -183,7 +184,8 @@ func (c *ApiController) AddUser() { var user object.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddUser(&user)) @@ -201,7 +203,8 @@ func (c *ApiController) DeleteUser() { var user object.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteUser(&user)) @@ -220,7 +223,8 @@ func (c *ApiController) GetEmailAndPhone() { var form RequestForm err := json.Unmarshal(c.Ctx.Input.RequestBody, &form) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } user := object.GetUserByFields(form.Organization, form.Username) @@ -306,7 +310,8 @@ func (c *ApiController) CheckUserPassword() { var user object.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } _, msg := object.CheckUserPassword(user.Owner, user.Name, user.Password) diff --git a/controllers/user_upload.go b/controllers/user_upload.go index 8ccbcb8d..31ae3daa 100644 --- a/controllers/user_upload.go +++ b/controllers/user_upload.go @@ -24,17 +24,18 @@ import ( "github.com/casdoor/casdoor/util" ) -func saveFile(path string, file *multipart.File) { +func saveFile(path string, file *multipart.File) (err error) { f, err := os.Create(path) if err != nil { - panic(err) + return err } defer f.Close() _, err = io.Copy(f, *file) if err != nil { - panic(err) + return err } + return nil } func (c *ApiController) UploadUsers() { @@ -43,13 +44,18 @@ func (c *ApiController) UploadUsers() { file, header, err := c.Ctx.Request.FormFile("file") if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } fileId := fmt.Sprintf("%s_%s_%s", owner, user, util.RemoveExt(header.Filename)) path := util.GetUploadXlsxPath(fileId) util.EnsureFileFolderExists(path) - saveFile(path, &file) + err = saveFile(path, &file) + if err != nil { + c.ResponseError(err.Error()) + return + } affected := object.UploadUsers(owner, fileId) if affected { diff --git a/controllers/util.go b/controllers/util.go index 72764004..c9c6f659 100644 --- a/controllers/util.go +++ b/controllers/util.go @@ -23,9 +23,8 @@ import ( "github.com/casdoor/casdoor/util" ) -// ResponseOk ... -func (c *ApiController) ResponseOk(data ...interface{}) { - resp := Response{Status: "ok"} +// ResponseJsonData ... +func (c *ApiController) ResponseJsonData(resp *Response, data ...interface{}) { switch len(data) { case 2: resp.Data2 = data[1] @@ -37,18 +36,16 @@ func (c *ApiController) ResponseOk(data ...interface{}) { c.ServeJSON() } +// ResponseOk ... +func (c *ApiController) ResponseOk(data ...interface{}) { + resp := &Response{Status: "ok"} + c.ResponseJsonData(resp, data...) +} + // ResponseError ... func (c *ApiController) ResponseError(error string, data ...interface{}) { - resp := Response{Status: "error", Msg: error} - switch len(data) { - case 2: - resp.Data2 = data[1] - fallthrough - case 1: - resp.Data = data[0] - } - c.Data["json"] = resp - c.ServeJSON() + resp := &Response{Status: "error", Msg: error} + c.ResponseJsonData(resp, data...) } // SetTokenErrorHttpStatus ... @@ -78,13 +75,8 @@ func (c *ApiController) RequireSignedIn() (string, bool) { return userId, true } -func getInitScore() int { - score, err := strconv.Atoi(conf.GetConfigString("initScore")) - if err != nil { - panic(err) - } - - return score +func getInitScore() (int, error) { + return strconv.Atoi(conf.GetConfigString("initScore")) } func (c *ApiController) GetProviderFromContext(category string) (*object.Provider, *object.User, bool) { diff --git a/controllers/webhook.go b/controllers/webhook.go index ecc9ecde..24bc8e0a 100644 --- a/controllers/webhook.go +++ b/controllers/webhook.go @@ -76,7 +76,8 @@ func (c *ApiController) UpdateWebhook() { var webhook object.Webhook err := json.Unmarshal(c.Ctx.Input.RequestBody, &webhook) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.UpdateWebhook(id, &webhook)) @@ -94,7 +95,8 @@ func (c *ApiController) AddWebhook() { var webhook object.Webhook err := json.Unmarshal(c.Ctx.Input.RequestBody, &webhook) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.AddWebhook(&webhook)) @@ -112,7 +114,8 @@ func (c *ApiController) DeleteWebhook() { var webhook object.Webhook err := json.Unmarshal(c.Ctx.Input.RequestBody, &webhook) if err != nil { - panic(err) + c.ResponseError(err.Error()) + return } c.Data["json"] = wrapActionResponse(object.DeleteWebhook(&webhook))