124 lines
4.8 KiB
Go
124 lines
4.8 KiB
Go
// Code generated by ogen, DO NOT EDIT.
|
|
|
|
package api
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/go-faster/errors"
|
|
|
|
"github.com/ogen-go/ogen/ogenerrors"
|
|
)
|
|
|
|
// SecurityHandler is handler for security parameters.
|
|
type SecurityHandler interface {
|
|
// HandleCookieAuth handles cookieAuth security.
|
|
HandleCookieAuth(ctx context.Context, operationName OperationName, t CookieAuth) (context.Context, error)
|
|
}
|
|
|
|
func findAuthorization(h http.Header, prefix string) (string, bool) {
|
|
v, ok := h["Authorization"]
|
|
if !ok {
|
|
return "", false
|
|
}
|
|
for _, vv := range v {
|
|
scheme, value, ok := strings.Cut(vv, " ")
|
|
if !ok || !strings.EqualFold(scheme, prefix) {
|
|
continue
|
|
}
|
|
return value, true
|
|
}
|
|
return "", false
|
|
}
|
|
|
|
var operationRolesCookieAuth = map[string][]string{
|
|
ActionMapfixAcceptedOperation: []string{},
|
|
ActionMapfixRejectOperation: []string{},
|
|
ActionMapfixRequestChangesOperation: []string{},
|
|
ActionMapfixResetSubmittingOperation: []string{},
|
|
ActionMapfixRetryValidateOperation: []string{},
|
|
ActionMapfixRevokeOperation: []string{},
|
|
ActionMapfixTriggerReleaseOperation: []string{},
|
|
ActionMapfixTriggerSubmitOperation: []string{},
|
|
ActionMapfixTriggerSubmitUncheckedOperation: []string{},
|
|
ActionMapfixTriggerUploadOperation: []string{},
|
|
ActionMapfixTriggerValidateOperation: []string{},
|
|
ActionMapfixUploadedOperation: []string{},
|
|
ActionMapfixValidatedOperation: []string{},
|
|
ActionSubmissionAcceptedOperation: []string{},
|
|
ActionSubmissionRejectOperation: []string{},
|
|
ActionSubmissionRequestChangesOperation: []string{},
|
|
ActionSubmissionResetSubmittingOperation: []string{},
|
|
ActionSubmissionRetryValidateOperation: []string{},
|
|
ActionSubmissionRevokeOperation: []string{},
|
|
ActionSubmissionTriggerSubmitOperation: []string{},
|
|
ActionSubmissionTriggerSubmitUncheckedOperation: []string{},
|
|
ActionSubmissionTriggerUploadOperation: []string{},
|
|
ActionSubmissionTriggerValidateOperation: []string{},
|
|
ActionSubmissionValidatedOperation: []string{},
|
|
CreateMapfixOperation: []string{},
|
|
CreateMapfixAuditCommentOperation: []string{},
|
|
CreateScriptOperation: []string{},
|
|
CreateScriptPolicyOperation: []string{},
|
|
CreateSubmissionOperation: []string{},
|
|
CreateSubmissionAdminOperation: []string{},
|
|
CreateSubmissionAuditCommentOperation: []string{},
|
|
DeleteScriptOperation: []string{},
|
|
DeleteScriptPolicyOperation: []string{},
|
|
DownloadMapAssetOperation: []string{},
|
|
GetOperationOperation: []string{},
|
|
ReleaseSubmissionsOperation: []string{},
|
|
SessionRolesOperation: []string{},
|
|
SessionUserOperation: []string{},
|
|
SessionValidateOperation: []string{},
|
|
SetMapfixCompletedOperation: []string{},
|
|
SetSubmissionCompletedOperation: []string{},
|
|
UpdateMapfixModelOperation: []string{},
|
|
UpdateScriptOperation: []string{},
|
|
UpdateScriptPolicyOperation: []string{},
|
|
UpdateSubmissionModelOperation: []string{},
|
|
}
|
|
|
|
func (s *Server) securityCookieAuth(ctx context.Context, operationName OperationName, req *http.Request) (context.Context, bool, error) {
|
|
var t CookieAuth
|
|
const parameterName = "session_id"
|
|
var value string
|
|
switch cookie, err := req.Cookie(parameterName); {
|
|
case err == nil: // if NO error
|
|
value = cookie.Value
|
|
case errors.Is(err, http.ErrNoCookie):
|
|
return ctx, false, nil
|
|
default:
|
|
return nil, false, errors.Wrap(err, "get cookie value")
|
|
}
|
|
t.APIKey = value
|
|
t.Roles = operationRolesCookieAuth[operationName]
|
|
rctx, err := s.sec.HandleCookieAuth(ctx, operationName, t)
|
|
if errors.Is(err, ogenerrors.ErrSkipServerSecurity) {
|
|
return nil, false, nil
|
|
} else if err != nil {
|
|
return nil, false, err
|
|
}
|
|
return rctx, true, err
|
|
}
|
|
|
|
// SecuritySource is provider of security values (tokens, passwords, etc.).
|
|
type SecuritySource interface {
|
|
// CookieAuth provides cookieAuth security value.
|
|
CookieAuth(ctx context.Context, operationName OperationName) (CookieAuth, error)
|
|
}
|
|
|
|
func (s *Client) securityCookieAuth(ctx context.Context, operationName OperationName, req *http.Request) error {
|
|
t, err := s.sec.CookieAuth(ctx, operationName)
|
|
if err != nil {
|
|
return errors.Wrap(err, "security source \"CookieAuth\"")
|
|
}
|
|
req.AddCookie(&http.Cookie{
|
|
Name: "session_id",
|
|
Value: t.APIKey,
|
|
})
|
|
return nil
|
|
}
|