| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | package oauth2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 	"net/http" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TokenGenerateRequest provide to generate the token request parameters | 
					
						
							|  |  |  | type TokenGenerateRequest struct { | 
					
						
							|  |  |  | 	ClientID            string | 
					
						
							|  |  |  | 	ClientSecret        string | 
					
						
							|  |  |  | 	UserID              string | 
					
						
							|  |  |  | 	RedirectURI         string | 
					
						
							|  |  |  | 	Scope               string | 
					
						
							|  |  |  | 	Code                string | 
					
						
							|  |  |  | 	CodeChallenge       string | 
					
						
							|  |  |  | 	CodeChallengeMethod CodeChallengeMethod | 
					
						
							|  |  |  | 	Refresh             string | 
					
						
							|  |  |  | 	CodeVerifier        string | 
					
						
							|  |  |  | 	AccessTokenExp      time.Duration | 
					
						
							|  |  |  | 	Request             *http.Request | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Manager authorization management interface | 
					
						
							|  |  |  | type Manager interface { | 
					
						
							|  |  |  | 	// get the client information | 
					
						
							|  |  |  | 	GetClient(ctx context.Context, clientID string) (cli ClientInfo, err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// generate the authorization token(code) | 
					
						
							|  |  |  | 	GenerateAuthToken(ctx context.Context, rt ResponseType, tgr *TokenGenerateRequest) (authToken TokenInfo, err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// generate the access token | 
					
						
							| 
									
										
										
										
											2025-06-06 15:14:37 +02:00
										 |  |  | 	GenerateAccessToken(ctx context.Context, gt GrantType, tgr *TokenGenerateRequest) (accessToken TokenInfo, err error) | 
					
						
							| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// refreshing an access token | 
					
						
							|  |  |  | 	RefreshAccessToken(ctx context.Context, tgr *TokenGenerateRequest) (accessToken TokenInfo, err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// use the access token to delete the token information | 
					
						
							|  |  |  | 	RemoveAccessToken(ctx context.Context, access string) (err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// use the refresh token to delete the token information | 
					
						
							|  |  |  | 	RemoveRefreshToken(ctx context.Context, refresh string) (err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// according to the access token for corresponding token information | 
					
						
							|  |  |  | 	LoadAccessToken(ctx context.Context, access string) (ti TokenInfo, err error) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// according to the refresh token for corresponding token information | 
					
						
							|  |  |  | 	LoadRefreshToken(ctx context.Context, refresh string) (ti TokenInfo, err error) | 
					
						
							|  |  |  | } |