storage

package
v0.0.0-...-a47b674 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2020 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Datastore

type Datastore interface {
	// AddGroup will add a new group to the database
	AddGroup(*Group) error

	// DeleteGroup will remove a group given its group id
	DeleteGroup(string) error

	// AddUserToGroup will add a user of a given id to a group of given id
	AddUserToGroup(string, string, string) error

	// RemoveUserFromGroup will remove a user of a given id from a group of given id
	RemoveUserFromGroup(string, string, string) error

	// AddUser will add a new user to the database given username, password, and email, returns the ID
	AddUser(string, string, string) (string, error)

	// GetUserID gets a user's ID given their username
	GetUserID(string) (string, error)

	// DeleteUser will remove a user from the database
	DeleteUser(string) error

	// HTTP Endpoint Handler for listing groups
	ListGroupsHandler(http.ResponseWriter, *http.Request)

	// HTTP Endpoint Handler for showing a group
	ShowGroupHandler(http.ResponseWriter, *http.Request)

	PassedBasicAuth(string, string) bool
	GetUserMemberGroups(string) []string
}

Datastore will allow us to implement a database in multiple ways

type Group

type Group struct {
	ID          string   `json:"id"`
	Name        string   `json:"name"`
	Description string   `json:"description,omitempty"`
	Members     []string `json:"members,omitempty"` //list of member user uuids
	Owners      []string `json:"owners,omitempty"`  //list of owner user uuids
}

type ListGroupsResponse

type ListGroupsResponse struct {
	Groups []Group `json:"groups"`
}

type MockDB

type MockDB struct {
	sync.RWMutex //inherit lock behavior
	Groups       map[string]*Group
	Users        map[string]*User
}

func NewMockDB

func NewMockDB() *MockDB

NewMockDB returns a new MockDB

func (*MockDB) AddGroup

func (db *MockDB) AddGroup(gp *Group) error

addGroup will add a new group to the database

func (*MockDB) AddUser

func (db *MockDB) AddUser(username, password, email string) (string, error)

AddUser will add a new user to the database

func (*MockDB) AddUserToGroup

func (db *MockDB) AddUserToGroup(userID, groupID, membershipType string) error

addUserToGroup will add a user of a given id to a group of given id

func (*MockDB) DeleteGroup

func (db *MockDB) DeleteGroup(id string) error

deleteGroup will remove a group given its group id

func (*MockDB) DeleteUser

func (db *MockDB) DeleteUser(id string) error

deleteUser will remove a user from the database

func (*MockDB) GetUserID

func (db *MockDB) GetUserID(uname string) (string, error)

GetUserID returns the user ID of a user given his/her username

func (*MockDB) GetUserMemberGroups

func (db *MockDB) GetUserMemberGroups(userid string) []string

func (*MockDB) ListGroupsHandler

func (db *MockDB) ListGroupsHandler(w http.ResponseWriter, r *http.Request)

ListGroupsHandler is an HTTP Req. Handler that lists groups in the database

func (*MockDB) PassedBasicAuth

func (db *MockDB) PassedBasicAuth(uname, pass string) bool

PassedBasicAuth takes in basic auth credentials, hashes the password and compares against the hash in store

func (*MockDB) RemoveUserFromGroup

func (db *MockDB) RemoveUserFromGroup(userID, groupID, membershipType string) error

removeUserFromGroup will remove a user of a given id from a group of given id

func (*MockDB) ShowGroupHandler

func (db *MockDB) ShowGroupHandler(w http.ResponseWriter, r *http.Request)

ShowGroupHandler is an HTTP Req. Handler that lists groups in the database

type User

type User struct {
	ID     string `json:"id"`
	Secret []byte `json:"hashed"`
	Email  string `json:"email"`
}

Jump to

Keyboard shortcuts

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