From af61b2249ab9d0afb7424509112d06c578dca059 Mon Sep 17 00:00:00 2001 From: Gustavo Marin Date: Sat, 29 Feb 2020 07:19:32 +0100 Subject: adds API endpoints to manage OAuth2 Application (list/create/delete) (#10437) * add API endpoint to create OAuth2 Application. * move endpoint to /user. Add swagger documentations and proper response type. * change json tags to snake_case. add CreateOAuth2ApplicationOptions to swagger docs. * change response status to Created (201) * add methods to list OAuth2 apps and delete an existing OAuth2 app by ID. * add APIFormat convert method and file header * fixed header * hide secret on oauth2 application list * add Created time to API response * add API integration tests for create/list/delete OAuth2 applications. Co-authored-by: techknowlogick Co-authored-by: zeripath Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com> --- modules/convert/convert.go | 12 ++++++++++++ modules/structs/user_app.go | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'modules') diff --git a/modules/convert/convert.go b/modules/convert/convert.go index 31b46bc7eb..cab2f84bb9 100644 --- a/modules/convert/convert.go +++ b/modules/convert/convert.go @@ -388,3 +388,15 @@ func ToTopicResponse(topic *models.Topic) *api.TopicResponse { Updated: topic.UpdatedUnix.AsTime(), } } + +// ToOAuth2Application convert from models.OAuth2Application to api.OAuth2Application +func ToOAuth2Application(app *models.OAuth2Application) *api.OAuth2Application { + return &api.OAuth2Application{ + ID: app.ID, + Name: app.Name, + ClientID: app.ClientID, + ClientSecret: app.ClientSecret, + RedirectURIs: app.RedirectURIs, + Created: app.CreatedUnix.AsTime(), + } +} diff --git a/modules/structs/user_app.go b/modules/structs/user_app.go index 9340486685..a0b0c3cb70 100644 --- a/modules/structs/user_app.go +++ b/modules/structs/user_app.go @@ -7,6 +7,7 @@ package structs import ( "encoding/base64" + "time" ) // BasicAuthEncode generate base64 of basic auth head @@ -32,3 +33,24 @@ type AccessTokenList []*AccessToken type CreateAccessTokenOption struct { Name string `json:"name" binding:"Required"` } + +// CreateOAuth2ApplicationOptions holds options to create an oauth2 application +type CreateOAuth2ApplicationOptions struct { + Name string `json:"name" binding:"Required"` + RedirectURIs []string `json:"redirect_uris" binding:"Required"` +} + +// OAuth2Application represents an OAuth2 application. +// swagger:response OAuth2Application +type OAuth2Application struct { + ID int64 `json:"id"` + Name string `json:"name"` + ClientID string `json:"client_id"` + ClientSecret string `json:"client_secret"` + RedirectURIs []string `json:"redirect_uris"` + Created time.Time `json:"created"` +} + +// OAuth2ApplicationList represents a list of OAuth2 applications. +// swagger:response OAuth2ApplicationList +type OAuth2ApplicationList []*OAuth2Application -- cgit v1.2.3