mgoauth

package module
v0.0.0-...-9f5b77a Latest Latest
Warning

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

Go to latest
Published: Dec 25, 2014 License: BSD-3-Clause Imports: 12 Imported by: 2

README

auth-mongo-mngr

Package implement a kidstuff/auth manager with MongoDB.

Install

go get github.com/kidstuff/auth-mongo-mngr

Setup

This manager require developer to build some indexes by calling mgoauth.Setup in a setup script or by running these command in mongodb shell:

db.mgoauth_user.ensureIndex( { Email: 1 }, { unique: true } )
db.mgoauth_user.ensureIndex( { LastActivity: 1 } )
db.mgoauth_user.ensureIndex( { Groups.Id: 1 } )
db.mgoauth_login.ensureIndex( { UserId: 1 } )
db.mgoauth_login.ensureIndex( { ExpiredOn: 1 }, { expireAfterSeconds: 60 } )
db.mgoauth_group.ensureIndex( { Name: 1 }, { unique: true } )
Usage
import (
	"github.com/kidstuff/auth-mongo-mngr"
	"labix.org/v2/mgo"
)

func main() {
	// connect to database
	session, err := mgo.Dial(MONGODB_URL)
	if err != nil {
		panic(err)
	}
	defer session.Close()
	session.SetMode(mgo.Monotonic, true)
	db := session.DB(DB_NAME)

	// config kidstuff/auth API to work with auth-mongo-mngr
	mgoauth.Initial(db)
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoResult = errors.New("mgoauth: no result")
)

Functions

func EnsureIndex

func EnsureIndex(db *mgo.Database) error

EnsureIndex builds the index for users data and login state collection.

func Initial

func Initial(db *mgo.Database)

Initial function should be called in the application first start

func Setup

func Setup(db *mgo.Database) error

Setup run EnsureIndex and stuff to prepare database

Types

type Group

type Group struct {
	Id              bson.ObjectId `bson:"_id"`
	authmodel.Group `bson:",inline"`
}

type LoginState

type LoginState struct {
	ExpiredOn time.Time     `bson:"ExpiredOn"`
	UserId    bson.ObjectId `bson:"UserId"`
	Token     string        `bson:"_id"`
}

type MgoConfigMngr

type MgoConfigMngr struct {
	ConfigColl *mgo.Collection
}

func NewMgoConfigMngr

func NewMgoConfigMngr(db *mgo.Database) *MgoConfigMngr

func (*MgoConfigMngr) Get

func (c *MgoConfigMngr) Get(key string) (string, error)

func (*MgoConfigMngr) GetMulti

func (c *MgoConfigMngr) GetMulti(keys []string) (map[string]string, error)

func (*MgoConfigMngr) Set

func (c *MgoConfigMngr) Set(key string, val string) error

func (*MgoConfigMngr) SetMulti

func (c *MgoConfigMngr) SetMulti(m map[string]string) error

func (*MgoConfigMngr) UnSet

func (c *MgoConfigMngr) UnSet(key string) error

func (*MgoConfigMngr) UnSetMulti

func (c *MgoConfigMngr) UnSetMulti(keys []string) error

type MgoManager

type MgoManager struct {
	MinimumOnlineThreshold time.Duration
	GroupColl              *mgo.Collection
	UserColl               *mgo.Collection
	LoginColl              *mgo.Collection
	Formater               authmodel.FormatChecker
	DefaultLimit           int
}

func NewMgoManager

func NewMgoManager(db *mgo.Database) *MgoManager

func (*MgoManager) AddGroupDetail

func (m *MgoManager) AddGroupDetail(name string, pri []string, info *authmodel.GroupInfo) (*authmodel.Group, error)

func (*MgoManager) AddUser

func (m *MgoManager) AddUser(email, pwd string, app bool) (*authmodel.User,
	error)

func (*MgoManager) AddUserDetail

func (m *MgoManager) AddUserDetail(email, pwd string, app bool, pri []string,
	code map[string]string, profile *authmodel.Profile, groupIds []string) (*authmodel.User, error)

func (*MgoManager) ComparePassword

func (m *MgoManager) ComparePassword(ps string, pwd *authmodel.Password) error

func (*MgoManager) DeleteGroup

func (m *MgoManager) DeleteGroup(id string) error

func (*MgoManager) DeleteUser

func (m *MgoManager) DeleteUser(id string) error

func (*MgoManager) FindAllGroup

func (m *MgoManager) FindAllGroup(limit int, offsetId string, fields []string) (
	[]*authmodel.Group, error)

func (*MgoManager) FindAllUser

func (m *MgoManager) FindAllUser(limit int, offsetId string, fields []string,
	groupIds []string) ([]*authmodel.User, error)

func (*MgoManager) FindAllUserOnline

func (m *MgoManager) FindAllUserOnline(limit int, offsetId string, fields []string) (
	[]*authmodel.User, error)

func (*MgoManager) FindGroup

func (m *MgoManager) FindGroup(id string) (*authmodel.Group, error)

func (*MgoManager) FindGroupByName

func (m *MgoManager) FindGroupByName(name string) (*authmodel.Group, error)

func (*MgoManager) FindSomeGroup

func (m *MgoManager) FindSomeGroup(id []string, fields []string) (
	[]*authmodel.Group, error)

func (*MgoManager) FindUser

func (m *MgoManager) FindUser(id string) (*authmodel.User, error)

func (*MgoManager) FindUserByEmail

func (m *MgoManager) FindUserByEmail(email string) (*authmodel.User, error)

func (*MgoManager) GetUser

func (m *MgoManager) GetUser(token string) (*authmodel.User, error)

func (*MgoManager) Login

func (m *MgoManager) Login(id string, stay time.Duration) (string, error)

func (*MgoManager) Logout

func (m *MgoManager) Logout(token string, all bool) error

func (*MgoManager) UpdateGroupDetail

func (m *MgoManager) UpdateGroupDetail(id string, pri []string, info *authmodel.GroupInfo) error

func (*MgoManager) UpdateUserDetail

func (m *MgoManager) UpdateUserDetail(id string, pwd *string, app *bool, pri []string,
	code map[string]string, profile *authmodel.Profile, groupIds []string) error

type User

type User struct {
	Id             bson.ObjectId `bson:"_id"`
	authmodel.User `bson:",inline"`
}

Jump to

Keyboard shortcuts

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