auth
auth/client.go
Rough out profiles. Create a Profile type that stores information about user profiles. Create a Login type that stores information about a login strategy for user profiles. This is necessary so that a user can login with their username or email address, with usernames not being required if an email address is supplied and email addresses not being required if a username is supplied.
| paddy@6 | 1 package auth |
| paddy@0 | 2 |
| paddy@0 | 3 import ( |
| paddy@0 | 4 "secondbit.org/uuid" |
| paddy@0 | 5 ) |
| paddy@0 | 6 |
| paddy@25 | 7 // Client represents a client that grants access |
| paddy@25 | 8 // to the auth server, exchanging grants for tokens, |
| paddy@25 | 9 // and tokens for access. |
| paddy@0 | 10 type Client struct { |
| paddy@0 | 11 ID uuid.ID |
| paddy@0 | 12 Secret string |
| paddy@0 | 13 RedirectURI string |
| paddy@0 | 14 OwnerID uuid.ID |
| paddy@0 | 15 Name string |
| paddy@0 | 16 Logo string |
| paddy@25 | 17 Website string |
| paddy@0 | 18 } |
| paddy@0 | 19 |
| paddy@25 | 20 // ClientStore abstracts the storage interface for |
| paddy@25 | 21 // storing and retrieving Clients. |
| paddy@25 | 22 type ClientStore interface { |
| paddy@25 | 23 GetClient(id uuid.ID) (Client, error) |
| paddy@25 | 24 SaveClient(client Client) error |
| paddy@25 | 25 UpdateClient(id uuid.ID, secret, redirectURI *string, ownerID uuid.ID, name, logo, website *string) error |
| paddy@25 | 26 DeleteClient(id uuid.ID) error |
| paddy@25 | 27 ListClientsByOwner(ownerID uuid.ID, page, num int) ([]Client, error) |
| paddy@0 | 28 } |