feat: fully featured token checks
This commit is contained in:
parent
7956a8a961
commit
713c0adc14
6 changed files with 226 additions and 77 deletions
|
|
@ -56,6 +56,9 @@ type ServerInterface interface {
|
|||
// Get service impersontaion token
|
||||
// (POST /get-impersonation-token)
|
||||
GetImpersonationToken(c *gin.Context)
|
||||
// Refreshes access_token and refresh_token
|
||||
// (GET /refresh-tokens)
|
||||
RefreshTokens(c *gin.Context)
|
||||
// Sign in a user and return JWT
|
||||
// (POST /sign-in)
|
||||
PostSignIn(c *gin.Context)
|
||||
|
|
@ -88,6 +91,19 @@ func (siw *ServerInterfaceWrapper) GetImpersonationToken(c *gin.Context) {
|
|||
siw.Handler.GetImpersonationToken(c)
|
||||
}
|
||||
|
||||
// RefreshTokens operation middleware
|
||||
func (siw *ServerInterfaceWrapper) RefreshTokens(c *gin.Context) {
|
||||
|
||||
for _, middleware := range siw.HandlerMiddlewares {
|
||||
middleware(c)
|
||||
if c.IsAborted() {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
siw.Handler.RefreshTokens(c)
|
||||
}
|
||||
|
||||
// PostSignIn operation middleware
|
||||
func (siw *ServerInterfaceWrapper) PostSignIn(c *gin.Context) {
|
||||
|
||||
|
|
@ -142,10 +158,17 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options
|
|||
}
|
||||
|
||||
router.POST(options.BaseURL+"/get-impersonation-token", wrapper.GetImpersonationToken)
|
||||
router.GET(options.BaseURL+"/refresh-tokens", wrapper.RefreshTokens)
|
||||
router.POST(options.BaseURL+"/sign-in", wrapper.PostSignIn)
|
||||
router.POST(options.BaseURL+"/sign-up", wrapper.PostSignUp)
|
||||
}
|
||||
|
||||
type ClientErrorResponse struct {
|
||||
}
|
||||
|
||||
type ServerErrorResponse struct {
|
||||
}
|
||||
|
||||
type UnauthorizedErrorResponse struct {
|
||||
}
|
||||
|
||||
|
|
@ -176,6 +199,42 @@ func (response GetImpersonationToken401Response) VisitGetImpersonationTokenRespo
|
|||
return nil
|
||||
}
|
||||
|
||||
type RefreshTokensRequestObject struct {
|
||||
}
|
||||
|
||||
type RefreshTokensResponseObject interface {
|
||||
VisitRefreshTokensResponse(w http.ResponseWriter) error
|
||||
}
|
||||
|
||||
type RefreshTokens200Response struct {
|
||||
}
|
||||
|
||||
func (response RefreshTokens200Response) VisitRefreshTokensResponse(w http.ResponseWriter) error {
|
||||
w.WriteHeader(200)
|
||||
return nil
|
||||
}
|
||||
|
||||
type RefreshTokens400Response = ClientErrorResponse
|
||||
|
||||
func (response RefreshTokens400Response) VisitRefreshTokensResponse(w http.ResponseWriter) error {
|
||||
w.WriteHeader(400)
|
||||
return nil
|
||||
}
|
||||
|
||||
type RefreshTokens401Response = UnauthorizedErrorResponse
|
||||
|
||||
func (response RefreshTokens401Response) VisitRefreshTokensResponse(w http.ResponseWriter) error {
|
||||
w.WriteHeader(401)
|
||||
return nil
|
||||
}
|
||||
|
||||
type RefreshTokens500Response = ServerErrorResponse
|
||||
|
||||
func (response RefreshTokens500Response) VisitRefreshTokensResponse(w http.ResponseWriter) error {
|
||||
w.WriteHeader(500)
|
||||
return nil
|
||||
}
|
||||
|
||||
type PostSignInRequestObject struct {
|
||||
Body *PostSignInJSONRequestBody
|
||||
}
|
||||
|
|
@ -227,6 +286,9 @@ type StrictServerInterface interface {
|
|||
// Get service impersontaion token
|
||||
// (POST /get-impersonation-token)
|
||||
GetImpersonationToken(ctx context.Context, request GetImpersonationTokenRequestObject) (GetImpersonationTokenResponseObject, error)
|
||||
// Refreshes access_token and refresh_token
|
||||
// (GET /refresh-tokens)
|
||||
RefreshTokens(ctx context.Context, request RefreshTokensRequestObject) (RefreshTokensResponseObject, error)
|
||||
// Sign in a user and return JWT
|
||||
// (POST /sign-in)
|
||||
PostSignIn(ctx context.Context, request PostSignInRequestObject) (PostSignInResponseObject, error)
|
||||
|
|
@ -280,6 +342,31 @@ func (sh *strictHandler) GetImpersonationToken(ctx *gin.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
// RefreshTokens operation middleware
|
||||
func (sh *strictHandler) RefreshTokens(ctx *gin.Context) {
|
||||
var request RefreshTokensRequestObject
|
||||
|
||||
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
|
||||
return sh.ssi.RefreshTokens(ctx, request.(RefreshTokensRequestObject))
|
||||
}
|
||||
for _, middleware := range sh.middlewares {
|
||||
handler = middleware(handler, "RefreshTokens")
|
||||
}
|
||||
|
||||
response, err := handler(ctx, request)
|
||||
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
ctx.Status(http.StatusInternalServerError)
|
||||
} else if validResponse, ok := response.(RefreshTokensResponseObject); ok {
|
||||
if err := validResponse.VisitRefreshTokensResponse(ctx.Writer); err != nil {
|
||||
ctx.Error(err)
|
||||
}
|
||||
} else if response != nil {
|
||||
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
|
||||
}
|
||||
}
|
||||
|
||||
// PostSignIn operation middleware
|
||||
func (sh *strictHandler) PostSignIn(ctx *gin.Context) {
|
||||
var request PostSignInRequestObject
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue