feat: fully featured token checks
All checks were successful
Build and Deploy Go App / build (push) Successful in 6m39s
Build and Deploy Go App / deploy (push) Successful in 46s

This commit is contained in:
nihonium 2025-12-06 06:25:21 +03:00
parent 7956a8a961
commit 713c0adc14
Signed by: nihonium
GPG key ID: 0251623741027CFC
6 changed files with 226 additions and 77 deletions

View file

@ -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