authtoken

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2016 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Configuration added in v0.9.0

type Configuration struct {
	Implementation string
	Path           string
	Prefix         string
}

Configuration encapsulates arguments to initialize a token store

type FileStore

type FileStore string

FileStore implements TokenStore by saving users' Token under a directory specified by a string. Each access token is stored in a separate file.

func NewFileStore added in v0.9.0

func NewFileStore(address string) *FileStore

NewFileStore creates a file token store.

It panics when it fails to create the directory.

func (FileStore) Delete

func (f FileStore) Delete(accessToken string) error

Delete removes the access token from the file store.

Delete return an error if the token cannot removed. It is NOT not an error if the token does not exist at deletion time.

func (FileStore) Get

func (f FileStore) Get(accessToken string, token *Token) error

Get tries to read the specified access token from file and writes to the supplied Token.

Get returns an NotFoundError if no such access token exists or such access token is expired. In the latter case the expired access token is still written onto the supplied Token.

func (FileStore) Put

func (f FileStore) Put(token *Token) error

Put writes the specified token into a file and overwrites existing Token if any.

type NotFoundError

type NotFoundError struct {
	AccessToken string
	Err         error
}

NotFoundError is the error returned by Get if a TokenStore cannot find the requested token or the fetched token is expired.

func (*NotFoundError) Error

func (e *NotFoundError) Error() string

type RedisStore

type RedisStore struct {
	// contains filtered or unexported fields
}

RedisStore implements TokenStore by saving users' token in a redis server

func NewRedisStore

func NewRedisStore(address string, prefix string) *RedisStore

NewRedisStore creates a redis token store.

address is url to the redis server

prefix is a string prepending to access token key in redis

For example if the token is `cf4bdc65-3fe6-4d40-b7fd-58f00b82c506`
and the prefix is `myApp`, the key in redis should be
`myApp:cf4bdc65-3fe6-4d40-b7fd-58f00b82c506`.

func (*RedisStore) Delete

func (r *RedisStore) Delete(accessToken string) error

Delete removes the access token from redis store.

func (*RedisStore) Get

func (r *RedisStore) Get(accessToken string, token *Token) error

Get tries to read the specified access token from redis store and writes to the supplied Token.

func (*RedisStore) Put

func (r *RedisStore) Put(token *Token) error

Put writes the specified token into redis store and overwrites existing Token if any.

type RedisToken

type RedisToken struct {
	AccessToken string `redis:"accessToken"`
	ExpiredAt   int64  `redis:"expiredAt"`
	AppName     string `redis:"appName"`
	UserInfoID  string `redis:"userInfoID"`
}

RedisToken stores a Token with UnixNano timestamp

func (RedisToken) ToToken

func (r RedisToken) ToToken() *Token

ToToken converts a RedisToken to auth token

type Store

type Store interface {
	Get(accessToken string, token *Token) error
	Put(token *Token) error
	Delete(accessToken string) error
}

Store represents a persistent storage for Token.

func InitTokenStore

func InitTokenStore(config Configuration) Store

InitTokenStore accept a implementation and path string. Return a Store.

type Token

type Token struct {
	AccessToken string    `json:"accessToken" redis:"accessToken"`
	ExpiredAt   time.Time `json:"expiredAt" redis:"expiredAt"`
	AppName     string    `json:"appName" redis:"appName"`
	UserInfoID  string    `json:"userInfoID" redis:"userInfoID"`
}

Token is an expiry access token associated to a UserInfo.

func New

func New(appName string, userInfoID string, expiredAt time.Time) Token

New creates a new Token ready for use given a userInfoID and expiredAt date. If expiredAt is passed an empty Time, it will be set to 30 days from now.

func (*Token) IsExpired

func (t *Token) IsExpired() bool

IsExpired determines whether the Token has expired now or not.

func (Token) MarshalJSON

func (t Token) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (Token) ToRedisToken

func (t Token) ToRedisToken() *RedisToken

ToRedisToken converts an auth token to RedisToken

func (*Token) UnmarshalJSON

func (t *Token) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON implements the json.Unmarshaler interface.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL