auth
auth/storage.go
Implement CSRF prevention and pass info to confirmation. Implement CSRF prevention using the nosurf package. Note that the handler still needs to be wrapped before this will work. Pass info on the authorization being requested (namely the client and the scope) to the RenderConfirmation page so that the user can make an educated decision.
| paddy@6 | 1 package auth |
| paddy@0 | 2 |
| paddy@1 | 3 import "secondbit.org/uuid" |
| paddy@0 | 4 |
| paddy@1 | 5 type ClientStore interface { |
| paddy@1 | 6 GetClient(id uuid.ID) (Client, error) |
| paddy@1 | 7 CreateClient(name, logo, redirectURI string, owner uuid.ID) (Client, error) |
| paddy@12 | 8 UpdateClient(client uuid.ID, name, logo, redirectURI *string) error |
| paddy@15 | 9 RemoveClient(id uuid.ID) error |
| paddy@12 | 10 ListClients(id uuid.ID, page, num int) ([]Client, error) |
| paddy@1 | 11 } |
| paddy@0 | 12 |
| paddy@1 | 13 type TokenStore interface { |
| paddy@1 | 14 SaveAuthorization(AuthorizeData) error |
| paddy@1 | 15 GetAuthorization(code string) (AuthorizeData, error) |
| paddy@1 | 16 RemoveAuthorization(code string) error |
| paddy@0 | 17 |
| paddy@1 | 18 SaveAccess(AccessData) error |
| paddy@1 | 19 GetAccess(token string) (AccessData, error) |
| paddy@0 | 20 RemoveAccess(token string) error |
| paddy@0 | 21 |
| paddy@1 | 22 GetRefresh(token string) (AccessData, error) |
| paddy@0 | 23 RemoveRefresh(token string) error |
| paddy@0 | 24 } |
| paddy@1 | 25 |
| paddy@1 | 26 type ProfileStore interface { |
| paddy@1 | 27 GetProfile(username, password string) (uuid.ID, error) |
| paddy@1 | 28 } |