mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 06:12:25 -06:00 
			
		
		
		
	
		
			
	
	
		
			51 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
									GenerateAccessToken(ctx context.Context, rt GrantType, tgr *TokenGenerateRequest) (accessToken TokenInfo, err error)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// 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)
							 | 
						||
| 
								 | 
							
								}
							 |