auth
2014-08-16
Parent:fc5df8e68c7b
auth/storage.go
Implement session management and move login. Add a session store interface to validate and retrieve data about sessions. Implement session management in endpoints that need session support. Move the login functionality from inlined into the OAuth flow into its own handler, that the OAuth flow will redirect to. The login functionality should take a redirect URL parameter to return to the OAuth flow when login is completed.
| 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 } |
| paddy@19 | 29 |
| paddy@19 | 30 type SessionStore interface { |
| paddy@19 | 31 GetSession(token string) (Session, error) |
| paddy@19 | 32 GetAllSessions(username string) ([]Session, error) |
| paddy@19 | 33 SetSession(Session) error |
| paddy@19 | 34 ExpireSession(token string) error |
| paddy@19 | 35 } |