chore: linting

pull/6026/head
Jeffrey Smith II 2023-02-28 13:22:32 -05:00
parent 9433b97f5d
commit 051b54e45f
3 changed files with 90 additions and 87 deletions

View File

@ -821,13 +821,15 @@ const MappingWildcard string = "*"
// explicit role within the organization. // explicit role within the organization.
// //
// One can think of a mapping like so: // One can think of a mapping like so:
// Provider:Scheme:Group -> Organization //
// github:oauth2:influxdata -> Happy // Provider:Scheme:Group -> Organization
// beyondcorp:ldap:influxdata -> TheBillHilliettas // github:oauth2:influxdata -> Happy
// beyondcorp:ldap:influxdata -> TheBillHilliettas
// //
// Any of Provider, Scheme, or Group may be provided as a wildcard * // Any of Provider, Scheme, or Group may be provided as a wildcard *
// github:oauth2:* -> MyOrg //
// *:*:* -> AllOrg // github:oauth2:* -> MyOrg
// *:*:* -> AllOrg
type Mapping struct { type Mapping struct {
ID string `json:"id"` ID string `json:"id"`
Organization string `json:"organizationId"` Organization string `json:"organizationId"`

View File

@ -8,12 +8,13 @@
// //
// Resources that are storable in a file are: // Resources that are storable in a file are:
// (CRUD refers to create, read, update, delete. An '_' means not supported) // (CRUD refers to create, read, update, delete. An '_' means not supported)
// Apps(layouts) - _R__ //
// Dashboards - _RUD // Apps(layouts) - _R__
// Kapacitors - _RUD // Dashboards - _RUD
// Organizations - _R__ // Kapacitors - _RUD
// Protoboards - _R__ // Organizations - _R__
// Sources - _RUD // Protoboards - _R__
// Sources - _RUD
// //
// Caution should be taken when editing resources provided via the filestore, // Caution should be taken when editing resources provided via the filestore,
// especially in a distributed environment as unexpected behavior may occur. // especially in a distributed environment as unexpected behavior may occur.

View File

@ -3,49 +3,49 @@
// //
// This is how the pieces of this package fit together: // This is how the pieces of this package fit together:
// //
// ┌────────────────────────────────────────┐ // ┌────────────────────────────────────────┐
// │github.com/influxdata/chronograf/oauth2 │ // │github.com/influxdata/chronograf/oauth2 │
// ├────────────────────────────────────────┴────────────────────────────────────┐ // ├────────────────────────────────────────┴────────────────────────────────────┐
// │┌────────────────────┐ │ // │┌────────────────────┐ │
// ││ <<interface>> │ ┌─────────────────────────┐ │ // ││ <<interface>> │ ┌─────────────────────────┐ │
// ││ Authenticator │ │ AuthMux │ │ // ││ Authenticator │ │ AuthMux │ │
// │├────────────────────┤ ├─────────────────────────┤ │ // │├────────────────────┤ ├─────────────────────────┤ │
// ││Authorize() │ Auth │+SuccessURL : string │ │ // ││Authorize() │ Auth │+SuccessURL : string │ │
// ││Validate() ◀────────│+FailureURL : string │──────────┐ │ // ││Validate() ◀────────│+FailureURL : string │──────────┐ │
// ||Expire() | |+Now : func() time.Time | | | // ||Expire() | |+Now : func() time.Time | | |
// │└──────────△─────────┘ └─────────────────────────┘ | | // │└──────────△─────────┘ └─────────────────────────┘ | |
// │ │ │ │ | // │ │ │ │ |
// │ │ │ │ │ // │ │ │ │ │
// │ │ │ │ │ // │ │ │ │ │
// │ │ Provider│ │ │ // │ │ Provider│ │ │
// │ │ ┌───┘ │ │ // │ │ ┌───┘ │ │
// │┌──────────┴────────────┐ │ ▽ │ // │┌──────────┴────────────┐ │ ▽ │
// ││ Tokenizer │ │ ┌───────────────┐ │ // ││ Tokenizer │ │ ┌───────────────┐ │
// │├───────────────────────┤ ▼ │ <<interface>> │ │ // │├───────────────────────┤ ▼ │ <<interface>> │ │
// ││Create() │ ┌───────────────┐ │ OAuth2Mux │ │ // ││Create() │ ┌───────────────┐ │ OAuth2Mux │ │
// ││ValidPrincipal() │ │ <<interface>> │ ├───────────────┤ │ // ││ValidPrincipal() │ │ <<interface>> │ ├───────────────┤ │
// │└───────────────────────┘ │ Provider │ │Login() │ │ // │└───────────────────────┘ │ Provider │ │Login() │ │
// │ ├───────────────┤ │Logout() │ │ // │ ├───────────────┤ │Logout() │ │
// │ │ID() │ │Callback() │ │ // │ │ID() │ │Callback() │ │
// │ │Scopes() │ └───────────────┘ │ // │ │Scopes() │ └───────────────┘ │
// │ │Secret() │ │ // │ │Secret() │ │
// │ │Authenticator()│ │ // │ │Authenticator()│ │
// │ └───────────────┘ │ // │ └───────────────┘ │
// │ △ │ // │ △ │
// │ │ │ // │ │ │
// │ ┌─────────────────────────┼─────────────────────────┐ │ // │ ┌─────────────────────────┼─────────────────────────┐ │
// │ │ │ │ │ // │ │ │ │ │
// │ │ │ │ │ // │ │ │ │ │
// │ │ │ │ │ // │ │ │ │ │
// │ ┌───────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐│ // │ ┌───────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐│
// │ │ Github │ │ Google │ │ Heroku ││ // │ │ Github │ │ Google │ │ Heroku ││
// │ ├───────────────────────┤ ├──────────────────────┤ ├──────────────────────┤│ // │ ├───────────────────────┤ ├──────────────────────┤ ├──────────────────────┤│
// │ │+ClientID : string │ │+ClientID : string │ │+ClientID : string ││ // │ │+ClientID : string │ │+ClientID : string │ │+ClientID : string ││
// │ │+ClientSecret : string │ │+ClientSecret : string│ │+ClientSecret : string││ // │ │+ClientSecret : string │ │+ClientSecret : string│ │+ClientSecret : string││
// │ │+Orgs : []string │ │+Domains : []string │ └──────────────────────┘│ // │ │+Orgs : []string │ │+Domains : []string │ └──────────────────────┘│
// │ └───────────────────────┘ │+RedirectURL : string │ │ // │ └───────────────────────┘ │+RedirectURL : string │ │
// │ └──────────────────────┘ │ // │ └──────────────────────┘ │
// └─────────────────────────────────────────────────────────────────────────────┘ // └─────────────────────────────────────────────────────────────────────────────┘
// //
// The design focuses on an Authenticator, a Provider, and an OAuth2Mux. Their // The design focuses on an Authenticator, a Provider, and an OAuth2Mux. Their
// responsibilities, respectively, are to decode and encode secrets received // responsibilities, respectively, are to decode and encode secrets received
@ -57,36 +57,36 @@
// The Oauth2 flow between a browser, backend, and a Provider that this package // The Oauth2 flow between a browser, backend, and a Provider that this package
// implements is pictured below for reference. // implements is pictured below for reference.
// //
// ┌─────────┐ ┌───────────┐ ┌────────┐ // ┌─────────┐ ┌───────────┐ ┌────────┐
// │ Browser │ │Chronograf │ │Provider│ // │ Browser │ │Chronograf │ │Provider│
// └─────────┘ └───────────┘ └────────┘ // └─────────┘ └───────────┘ └────────┘
// │ │ │ // │ │ │
// ├─────── GET /auth ─────────▶ │ // ├─────── GET /auth ─────────▶ │
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// ◀ ─ ─ ─302 to Provider ─ ─ ┤ │ // ◀ ─ ─ ─302 to Provider ─ ─ ┤ │
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// ├──────────────── GET /auth w/ callback ─────────────────────▶ // ├──────────────── GET /auth w/ callback ─────────────────────▶
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// ◀─ ─ ─ ─ ─ ─ ─ 302 to Chronograf Callback ─ ─ ─ ─ ─ ─ ─ ─ ┤ // ◀─ ─ ─ ─ ─ ─ ─ 302 to Chronograf Callback ─ ─ ─ ─ ─ ─ ─ ─ ┤
// │ │ │ // │ │ │
// │ Code and State from │ │ // │ Code and State from │ │
// │ Provider │ │ // │ Provider │ │
// ├───────────────────────────▶ Request token w/ code & │ // ├───────────────────────────▶ Request token w/ code & │
// │ │ state │ // │ │ state │
// │ ├────────────────────────────────▶ // │ ├────────────────────────────────▶
// │ │ │ // │ │ │
// │ │ Response with │ // │ │ Response with │
// │ │ Token │ // │ │ Token │
// │ Set cookie, Redirect │◀ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ // │ Set cookie, Redirect │◀ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
// │ to / │ │ // │ to / │ │
// ◀───────────────────────────┤ │ // ◀───────────────────────────┤ │
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// │ │ │ // │ │ │
// //
// The browser ultimately receives a cookie from Chronograf, authorizing it. // The browser ultimately receives a cookie from Chronograf, authorizing it.
// Its contents are encoded as a JWT whose "sub" claim is the user's email // Its contents are encoded as a JWT whose "sub" claim is the user's email
@ -102,14 +102,14 @@
// convention to ensure compatibility with the front end logic. These routes // convention to ensure compatibility with the front end logic. These routes
// and their responsibilities are: // and their responsibilities are:
// //
// /oauth/{provider}/login // /oauth/{provider}/login
// //
// The `/oauth` endpoint redirects to the Provider for OAuth. Chronograf sets // The `/oauth` endpoint redirects to the Provider for OAuth. Chronograf sets
// the OAuth `state` request parameter to a JWT with a random "sub". Using // the OAuth `state` request parameter to a JWT with a random "sub". Using
// $TOKEN_SECRET `/oauth/github/callback` can validate the `state` parameter // $TOKEN_SECRET `/oauth/github/callback` can validate the `state` parameter
// without needing `state` to be saved. // without needing `state` to be saved.
// //
// /oauth/{provider}/callback // /oauth/{provider}/callback
// //
// The `/oauth/github/callback` receives the OAuth `authorization code` and `state`. // The `/oauth/github/callback` receives the OAuth `authorization code` and `state`.
// //
@ -135,7 +135,7 @@
// of the JWT within the cookie value. // of the JWT within the cookie value.
// If the request did not have a valid JWT, the API returns `HTTP/1.1 401 Unauthorized`. // If the request did not have a valid JWT, the API returns `HTTP/1.1 401 Unauthorized`.
// //
// /oauth/{provider}/logout // /oauth/{provider}/logout
// //
// Simply expires the session cookie and redirects to `/`. // Simply expires the session cookie and redirects to `/`.
package oauth2 package oauth2