auth

Paddy 2014-09-01 Parent:1aa3a85ff853

27:043906283c65 Go to Latest

auth/config.go.old

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.

History
paddy@23 1 package auth
paddy@23 2
paddy@23 3 import "time"
paddy@23 4
paddy@23 5 // AllowedAuthorizeType is a collection of allowed auth request types
paddy@23 6 type AllowedAuthorizeType []AuthorizeRequestType
paddy@23 7
paddy@23 8 // Exists returns true if the auth type exists in the list
paddy@23 9 func (t AllowedAuthorizeType) Exists(rt AuthorizeRequestType) bool {
paddy@23 10 for _, k := range t {
paddy@23 11 if k == rt {
paddy@23 12 return true
paddy@23 13 }
paddy@23 14 }
paddy@23 15 return false
paddy@23 16 }
paddy@23 17
paddy@23 18 // AllowedAccessType is a collection of allowed access request types
paddy@23 19 type AllowedAccessType []GrantType
paddy@23 20
paddy@23 21 // Exists returns true if the access type exists in the list
paddy@23 22 func (t AllowedAccessType) Exists(rt GrantType) bool {
paddy@23 23 for _, k := range t {
paddy@23 24 if k == rt {
paddy@23 25 return true
paddy@23 26 }
paddy@23 27 }
paddy@23 28 return false
paddy@23 29 }
paddy@23 30
paddy@23 31 // ServerConfig contains server configuration information
paddy@23 32 type ServerConfig struct {
paddy@23 33 // Authorization token expiration in seconds (default 5 minutes)
paddy@23 34 AuthorizationExpiration int32
paddy@23 35
paddy@23 36 // Access token expiration in seconds (default 1 hour)
paddy@23 37 AccessExpiration int32
paddy@23 38
paddy@23 39 // Token type to return
paddy@23 40 TokenType string
paddy@23 41
paddy@23 42 // List of allowed authorize types (only CodeAuthRT by default)
paddy@23 43 AllowedAuthorizeTypes AllowedAuthorizeType
paddy@23 44
paddy@23 45 // List of allowed access types (only AUTHORIZATION_CodeAuthRT by default)
paddy@23 46 AllowedAccessTypes AllowedAccessType
paddy@23 47
paddy@23 48 // HTTP status code to return for errors - default 200
paddy@23 49 // Only used if response was created from server
paddy@23 50 ErrorStatusCode int
paddy@23 51
paddy@23 52 // If true allows client secret also in params, else only in
paddy@23 53 // Authorization header - default false
paddy@23 54 AllowClientSecretInParams bool
paddy@23 55
paddy@23 56 // If true allows access request using GET, else only POST - default false
paddy@23 57 AllowGetAccessRequest bool
paddy@23 58
paddy@23 59 // The base path of documentation
paddy@23 60 DocumentationDomain string
paddy@23 61
paddy@23 62 SessionLength time.Duration
paddy@23 63 RequestIPHeader string
paddy@23 64 LoginRedirectDomain string
paddy@23 65 }
paddy@23 66
paddy@23 67 // NewServerConfig returns a new ServerConfig with default configuration
paddy@23 68 func NewServerConfig() ServerConfig {
paddy@23 69 return ServerConfig{
paddy@23 70 AuthorizationExpiration: 250,
paddy@23 71 AccessExpiration: 3600,
paddy@23 72 TokenType: "bearer",
paddy@23 73 AllowedAuthorizeTypes: AllowedAuthorizeType{CodeAuthRT},
paddy@23 74 AllowedAccessTypes: AllowedAccessType{AuthorizationCodeGrant},
paddy@23 75 ErrorStatusCode: 200,
paddy@23 76 AllowClientSecretInParams: false,
paddy@23 77 AllowGetAccessRequest: false,
paddy@23 78 }
paddy@23 79 }