Add Get/Update for api/v1/user/applications/oauth2 (#11008)
Add api methods for getting and updating user oauth2 applications. Signed-off-by: Dan Molik <dan@danmolik.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
4ec7a659ce
commit
743022116d
4 changed files with 214 additions and 4 deletions
|
@ -580,7 +580,10 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
m.Combo("/oauth2").
|
||||
Get(user.ListOauth2Applications).
|
||||
Post(bind(api.CreateOAuth2ApplicationOptions{}), user.CreateOauth2Application)
|
||||
m.Delete("/oauth2/:id", user.DeleteOauth2Application)
|
||||
m.Combo("/oauth2/:id").
|
||||
Delete(user.DeleteOauth2Application).
|
||||
Patch(bind(api.CreateOAuth2ApplicationOptions{}), user.UpdateOauth2Application).
|
||||
Get(user.GetOauth2Application)
|
||||
}, reqToken())
|
||||
|
||||
m.Group("/gpg_keys", func() {
|
||||
|
|
|
@ -231,3 +231,89 @@ func DeleteOauth2Application(ctx *context.APIContext) {
|
|||
|
||||
ctx.Status(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// GetOauth2Application get OAuth2 Application
|
||||
func GetOauth2Application(ctx *context.APIContext) {
|
||||
// swagger:operation GET /user/applications/oauth2/{id} user userGetOAuth2Application
|
||||
// ---
|
||||
// summary: get an OAuth2 Application
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: id
|
||||
// in: path
|
||||
// description: Application ID to be found
|
||||
// type: integer
|
||||
// format: int64
|
||||
// required: true
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/OAuth2Application"
|
||||
appID := ctx.ParamsInt64(":id")
|
||||
app, err := models.GetOAuth2ApplicationByID(appID)
|
||||
if err != nil {
|
||||
if models.IsErrOauthClientIDInvalid(err) || models.IsErrOAuthApplicationNotFound(err) {
|
||||
ctx.NotFound()
|
||||
} else {
|
||||
ctx.Error(http.StatusInternalServerError, "GetOauth2ApplicationByID", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
app.ClientSecret = ""
|
||||
|
||||
ctx.JSON(http.StatusOK, convert.ToOAuth2Application(app))
|
||||
}
|
||||
|
||||
// UpdateOauth2Application update OAuth2 Application
|
||||
func UpdateOauth2Application(ctx *context.APIContext, data api.CreateOAuth2ApplicationOptions) {
|
||||
// swagger:operation PATCH /user/applications/oauth2/{id} user userUpdateOAuth2Application
|
||||
// ---
|
||||
// summary: update an OAuth2 Application, this includes regenerating the client secret
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: id
|
||||
// in: path
|
||||
// description: application to be updated
|
||||
// type: integer
|
||||
// format: int64
|
||||
// required: true
|
||||
// - name: body
|
||||
// in: body
|
||||
// required: true
|
||||
// schema:
|
||||
// "$ref": "#/definitions/CreateOAuth2ApplicationOptions"
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/OAuth2Application"
|
||||
appID := ctx.ParamsInt64(":id")
|
||||
|
||||
err := models.UpdateOAuth2Application(models.UpdateOAuth2ApplicationOptions{
|
||||
Name: data.Name,
|
||||
UserID: ctx.User.ID,
|
||||
ID: appID,
|
||||
RedirectURIs: data.RedirectURIs,
|
||||
})
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusBadRequest, "", "error updating oauth2 application")
|
||||
return
|
||||
}
|
||||
app, err := models.GetOAuth2ApplicationByID(appID)
|
||||
if err != nil {
|
||||
if models.IsErrOauthClientIDInvalid(err) || models.IsErrOAuthApplicationNotFound(err) {
|
||||
ctx.NotFound()
|
||||
} else {
|
||||
ctx.Error(http.StatusInternalServerError, "UpdateOauth2ApplicationByID", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
secret, err := app.GenerateClientSecret()
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusBadRequest, "", "error updating application secret")
|
||||
return
|
||||
}
|
||||
app.ClientSecret = secret
|
||||
|
||||
ctx.JSON(http.StatusOK, convert.ToOAuth2Application(app))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue