37 lines
870 B
Go
37 lines
870 B
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
|
|
oapimw "github.com/nhost/nhost/internal/lib/oapi/middleware"
|
|
"github.com/nhost/nhost/services/auth/go/api"
|
|
"github.com/nhost/nhost/services/auth/go/sql"
|
|
)
|
|
|
|
func (ctrl *Controller) SignInPAT( //nolint:ireturn
|
|
ctx context.Context,
|
|
request api.SignInPATRequestObject,
|
|
) (api.SignInPATResponseObject, error) {
|
|
logger := oapimw.LoggerFromContext(ctx)
|
|
|
|
user, apiErr := ctrl.wf.GetUserByRefreshTokenHash(
|
|
ctx,
|
|
request.Body.PersonalAccessToken,
|
|
sql.RefreshTokenTypePAT,
|
|
logger,
|
|
)
|
|
if apiErr != nil {
|
|
return ctrl.respondWithError(apiErr), nil
|
|
}
|
|
|
|
session, err := ctrl.wf.NewSession(ctx, user, nil, logger)
|
|
if err != nil {
|
|
logger.ErrorContext(ctx, "error getting new session", logError(err))
|
|
return ctrl.sendError(ErrInternalServerError), nil
|
|
}
|
|
|
|
return api.SignInPAT200JSONResponse{
|
|
Session: session,
|
|
}, nil
|
|
}
|