Documentation ¶
Index ¶
- Constants
- Variables
- func DomainChecker(res http.ResponseWriter, tokens oauth2.Tokens)
- func InitRoutes(m *martini.ClassicMartini, redisConn Doer, mongoConn mongoCollection, ...)
- func InitSession(m *martini.ClassicMartini, rc redisCreds)
- type APIMetadata
- type APIResponse
- type APIResponseList
- type AuthDeleteHandler
- type AuthGetHandler
- type AuthPostHandler
- type AuthPutHandler
- type Controller
- type Doer
- type GUIDMake
- type GUIDMaker
- type KeyGen
- type KeyGenerator
- type MeGetHandler
- type OrgGetHandler
- type OrgPutHandler
- type PivotOrg
- type Response
- type UserAPIResponse
- type UserMatch
- type ValidateGetHandler
Constants ¶
const ( ClientID = "1083030294947-6g3bhhrgl3s7ul736jet625ajvp94f5p.apps.googleusercontent.com" ClientSecret = "kfgM5mT3BqPQ84VeXsYokAK_" )
Constants to construct my oauth calls
const ( //FailureStatus - failure response status from our unauthenticated rest endpoints FailureStatus = 403 //SuccessStatus - success response status from our authenticated rest endpoints SuccessStatus = 200 )
const ( //OrgCreateSuccessStatusCode - success status code from a call to the org create cc endpoint OrgCreateSuccessStatusCode = 201 //OrgCreateEndpoint - the endpoint to hit for org creation in the cc api OrgCreateEndpoint = "/v2/organizations" //ListUsersEndpoint - get a list of all users in paas ListUsersEndpoint = "/Users" //GetApiInfo - the endpoint to grab api info data GetAPIInfo = "/v2/info" )
const ( //HMFieldActive - name of metadata hash field containing active status HMFieldActive = "active" //HMFieldDetails - name of metadata hash field containing user and key details HMFieldDetails = "details" )
const ( UserParam = "user" APIVersion1 = "v1" AuthGroup = "auth" OrgGroup = "org" APIKeys = "/api-keys" ValidKeyCheck = "/valid-key" StaticPath = "public" )
Constants to construct routes with
const ( //GUIDLength - length of valid key GUIDLength = 36 //HeaderKeyName - header keyname for api-key value HeaderKeyName = "X-API-KEY" //ErrInvalidKeyFormatMsg - error msg for invalid key ErrInvalidKeyFormatMsg = "Invalid key format" )
const (
//EmailFieldName - fieldname for email
EmailFieldName = "email"
)
Variables ¶
var ( Scopes = []string{"https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/userinfo.email"} AuthFailureResponse = []byte(`{"error": "not logged in as a valid user, or the access token is expired"}`) OauthConfig *goauth2.Config )
Vars for my oauth calls
var ( //ErrUnparsableHash - an error for a hash that is not formed properly ErrUnparsableHash = errors.New("Could not parse the hash or hash was nil") //ErrEmptyKeyResponse - an error for a invalid or empty key ErrEmptyKeyResponse = errors.New("The key could not be found or was not valid") )
var ( //ErrNoMatchInStore - error when there is no matching org in the datastore ErrNoMatchInStore = errors.New("Could not find a matching user org or connection failure") //ErrCanNotCreateOrg - error when we can not create an org ErrCanNotCreateOrg = errors.New("Could not create a new org") //ErrCanNotAddOrgRec - error when we can not add a new org record to the datastore ErrCanNotAddOrgRec = errors.New("Could not add a new org record") //ErrCantCallAcrossUsers - error when a user is trying to update a user record other than their own ErrCantCallAcrossUsers = errors.New("user calling another users endpoint") )
var ( APIKey = fmt.Sprintf("/api-key/:%s", UserParam) OrgUser = fmt.Sprintf("/user/:%s", UserParam) URLAuthBaseV1 = fmt.Sprintf("/%s/%s", APIVersion1, AuthGroup) URLOrgBaseV1 = fmt.Sprintf("/%s/%s", APIVersion1, OrgGroup) )
formatted strings based on constants, to be used in URLs
var DomainCheck = func() martini.Handler { return DomainChecker }()
DomainCheck - a handler to check if we are in a valid domain
var (
ErrInvalidCallerEmail = errors.New("Invalid user token for your requested action")
)
Authentication Handler vars
var (
ErrNotValidActionForUser = errors.New("not a valid user to perform this action")
)
UserMatch exported vars
var ( //ErrOrgCreateAPICallFailure - error for failed call to create org endpoint ErrOrgCreateAPICallFailure = errors.New("failed to create org on api call") )
var GetUserInfo = func(tokens oauth2.Tokens) (userObject map[string]interface{}) { if userObject = getUserInfoCached(tokens); len(userObject) == 0 { userObject = getUserInfo(tokens) } return }
GetUserInfo - query googleapi for the authenticated users information
Functions ¶
func DomainChecker ¶
func DomainChecker(res http.ResponseWriter, tokens oauth2.Tokens)
DomainChecker - check the authenticated users domain to see if it is in the whitelist
func InitRoutes ¶
func InitRoutes(m *martini.ClassicMartini, redisConn Doer, mongoConn mongoCollection, authClient authRequestCreator)
InitRoutes - initialize the mappings for controllers against valid routes
func InitSession ¶
func InitSession(m *martini.ClassicMartini, rc redisCreds)
InitSession - initializes authentication middleware for controllers
Types ¶
type APIMetadata ¶
type APIMetadata struct { GUID string `json:"guid"` URL string `json:"url"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` }
APIMetadata = cc http response metadata
type APIResponse ¶
type APIResponse struct { Metadata APIMetadata `json:"metadata"` Entity map[string]interface{} `json:"entity"` }
APIResponse - cc http response object
type APIResponseList ¶
type APIResponseList struct {
Resources []APIResponse `json:"resources"`
}
APIResponseList - a list of resources or apiresponse objects
type AuthDeleteHandler ¶
type AuthDeleteHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
AuthDeleteHandler - auth control handler for delete calls
type AuthGetHandler ¶
type AuthGetHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
AuthGetHandler - auth control handler for get calls
type AuthPostHandler ¶
type AuthPostHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
AuthPostHandler - auth control handler for post calls
type AuthPutHandler ¶
type AuthPutHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
AuthPutHandler - auth control handler for put calls
type Controller ¶
type Controller interface { Put() interface{} Post() interface{} Get() interface{} Delete() interface{} }
Controller - interface of a base controller
func NewAuthKeyV1 ¶
func NewAuthKeyV1(kg KeyGenerator) Controller
NewAuthKeyV1 - get an instance of a V1 authkey controller
func NewMeController ¶
func NewMeController() Controller
NewMeController - a controller for me requests
func NewOrgController ¶
func NewOrgController(c persistence, authClient authRequestCreator) Controller
NewOrgController - a controller for me requests
func NewValidateV1 ¶
func NewValidateV1(kg KeyGenerator) Controller
NewValidateV1 - create a validation controller
type GUIDMaker ¶
type GUIDMaker interface {
Create() string
}
GUIDMaker - interface for a guid maker
type KeyGen ¶
type KeyGen struct {
// contains filtered or unexported fields
}
KeyGen - and implementation of the KeyGenerator interface
type KeyGenerator ¶
type KeyGenerator interface { Get(user string) (string, error) GetByKey(key string) (hash string, val interface{}, err error) Create(user, details string) error Delete(user string) error }
KeyGenerator - interface to work with apikeys
func NewKeyGen ¶
func NewKeyGen(doer Doer, guid GUIDMaker) KeyGenerator
NewKeyGen - create a new implementation of a KeyGenerator interface
type MeGetHandler ¶
MeGetHandler - a get control handler for me requests
type OrgGetHandler ¶
type OrgGetHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
OrgGetHandler - func signature of org get handler
type OrgPutHandler ¶
type OrgPutHandler func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens)
OrgPutHandler - func signature of org put handler
type UserAPIResponse ¶ added in v0.0.75
type UserAPIResponse struct {
Resources []map[string]interface{}
}
UserAPIResponse - the user api response object
type UserMatch ¶
type UserMatch struct {
// contains filtered or unexported fields
}
UserMatch - an object used to check if a user is updating the records on a user key they are able to access
func NewUserMatch ¶
func NewUserMatch() *UserMatch
NewUserMatch - creates a new usermatch struct pointer