package resolvers import ( "context" "fmt" log "github.com/sirupsen/logrus" "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/cookie" "github.com/authorizerdev/authorizer/server/crypto" "github.com/authorizerdev/authorizer/server/graph/model" "github.com/authorizerdev/authorizer/server/memorystore" "github.com/authorizerdev/authorizer/server/token" "github.com/authorizerdev/authorizer/server/utils" ) // AdminSessionResolver is a resolver for admin session query func AdminSessionResolver(ctx context.Context) (*model.Response, error) { var res *model.Response gc, err := utils.GinContextFromContext(ctx) if err != nil { log.Debug("Failed to get GinContext: ", err) return res, err } if !token.IsSuperAdmin(gc) { log.Debug("Not logged in as super admin") return res, fmt.Errorf("unauthorized") } adminSecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyAdminSecret) if err != nil { log.Debug("Error getting admin secret: ", err) return res, fmt.Errorf("unauthorized") } hashedKey, err := crypto.EncryptPassword(adminSecret) if err != nil { log.Debug("Failed to encrypt key: ", err) return res, err } cookie.SetAdminCookie(gc, hashedKey) res = &model.Response{ Message: "admin logged in successfully", } return res, nil }