MCPcopy Create free account
hub / github.com/pydio/cells / AuthorizationCodeAuth

Function AuthorizationCodeAuth

frontend/rest/modifiers/authfront-login-authcode.go:36–70  ·  view source on GitHub ↗

AuthorizationCodeAuth allows users having a valid AuthCode to register a session

(middleware frontend.AuthMiddleware)

Source from the content-addressed store, hash-verified

34
35// AuthorizationCodeAuth allows users having a valid AuthCode to register a session
36func AuthorizationCodeAuth(middleware frontend.AuthMiddleware) frontend.AuthMiddleware {
37
38 return func(req *restful.Request, rsp *restful.Response, in *frontend.FrontSessionWithRuntimeCtx, out *rest.FrontSessionResponse, session *sessions.Session) error {
39
40 if a, ok := in.AuthInfo["type"]; !ok || a != "authorization_code" { // Ignore this middleware
41 return middleware(req, rsp, in, out, session)
42 }
43
44 token, err := auth.DefaultJWTVerifier().Exchange(req.Request.Context(), in.AuthInfo["code"], in.AuthInfo["code_verifier"])
45 if err != nil {
46 return err
47 }
48
49 _, claims, err := auth.DefaultJWTVerifier().Verify(req.Request.Context(), token.AccessToken)
50 if err != nil {
51 return err
52 }
53
54 in.AuthInfo["login"] = claims.Name
55 in.AuthInfo["source"] = claims.AuthSource
56
57 session.Values["access_token"] = token.AccessToken
58 session.Values["id_token"] = token.Extra("id_token").(string)
59 session.Values["expires_at"] = strconv.Itoa(int(token.Expiry.Unix()))
60 session.Values["refresh_token"] = token.RefreshToken
61
62 out.Token = &pauth.Token{
63 AccessToken: session.Values["access_token"].(string),
64 IDToken: session.Values["id_token"].(string),
65 ExpiresAt: session.Values["expires_at"].(string),
66 }
67
68 return middleware(req, rsp, in, out, session) // BEFORE MIDDLEWARE
69 }
70}

Callers

nothing calls this directly

Calls 3

ExchangeMethod · 0.65
ContextMethod · 0.65
VerifyMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…