models

package
v0.0.12 Latest Latest
Warning

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

Go to latest
Published: May 17, 2019 License: MIT Imports: 12 Imported by: 2

Documentation

Index

Constants

View Source
const DEFAULT_VAULT_NAME = "Personal"
View Source
const TOKEN_VERIFICATION = 0

Variables

View Source
var (
	ErrInvalidEmail      = errors.New("Invalid email")
	ErrNotInTeam         = errors.New("User does not belong to team")
	ErrUnauthorized      = errors.New("You cannot do that")
	ErrAlreadyInTeam     = errors.New("Already belongs to team")
	ErrAlreadyInvited    = errors.New("Alredy invited")
	ErrAlreadyExists     = errors.New("Already exists")
	ErrInvalidKeys       = errors.New("Invalid keys for vault")
	ErrDoesntExist       = errors.New("Does not exist")
	ErrInvalidSignature  = errors.New("Invalid signature")
	ErrInvalidPublicKey  = errors.New("Invalid public key length")
	ErrInvalidAttributes = errors.New("Invalid attributes")
)
View Source
var (
	HASH_PASSWD_COST = 14
)

Functions

func AddDBToContext

func AddDBToContext(ctx context.Context, d *sql.DB) context.Context

func GetDB

func GetDB(ctx context.Context) *sql.DB

func IsDuplicateErr

func IsDuplicateErr(err error) bool

func MoveSecretToVault added in v0.0.12

func MoveSecretToVault(ctx context.Context, s *Secret, source, target *Vault) error

func NewUser

func NewUser(ctx context.Context, id, fullname, email, password string, keyPack []byte, signedVaultKeys VaultKeyPair) (*User, *Token, error)

Types

type Invite

type Invite struct {
	Team      string    `scaneo:"pk" json:"-"`
	Email     string    `scaneo:"pk" json:"email"`
	CreatedAt time.Time `json:"created_at"`
}

func FindInvitesForEmail added in v0.0.3

func FindInvitesForEmail(ctx context.Context, email string) (invs []*Invite, err error)

type Secret

type Secret struct {
	Team         string    `scaneo:"pk" json:"-"`
	Vault        string    `scaneo:"pk" json:"vault"`
	Id           string    `scaneo:"pk" json:"id"`
	Version      uint32    `json:"version"`
	Data         []byte    `json:"data"`
	VaultVersion uint32    `json:"vault_version"`
	CreatedAt    time.Time `json:"created_at"`
}

type Team

type Team struct {
	Id        string    `scaneo:"pk" json:"id"`
	Name      string    `json:"name"`
	Owner     string    `json:"owner"`
	Primary   bool      `json:"primary"`
	Size      int       `json:"-"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func (*Team) AddOrInviteUserByEmail

func (t *Team) AddOrInviteUserByEmail(ctx context.Context, admin *User, newcomerEmail string) (i *Invite, err error)

func (*Team) CheckAdmin

func (t *Team) CheckAdmin(ctx context.Context, u *User) (isAdmin bool, err error)

func (*Team) CreateVault

func (t *Team) CreateVault(ctx context.Context, u *User, name string, signedVaultKeys VaultKeyPair) (v *Vault, err error)

func (*Team) DemoteUser

func (t *Team) DemoteUser(ctx context.Context, demoter *User, demotee *User) error

func (*Team) GetSecretsForUser

func (t *Team) GetSecretsForUser(ctx context.Context, u *User) (s []*Secret, err error)

func (*Team) GetTeamFull

func (t *Team) GetTeamFull(ctx context.Context, u *User) (tf *TeamFull, err error)

func (*Team) GetUsersAfiliationFull

func (t *Team) GetUsersAfiliationFull(ctx context.Context) (tuf []*TeamUserFull, err error)

func (*Team) GetVaultForUser

func (t *Team) GetVaultForUser(ctx context.Context, vid string, u *User) (*Vault, error)

func (*Team) GetVaultsForUser

func (t *Team) GetVaultsForUser(ctx context.Context, u *User) (vs []*Vault, err error)

func (*Team) GetVaultsFullForUser

func (t *Team) GetVaultsFullForUser(ctx context.Context, u *User) (vf []*VaultFull, err error)

func (*Team) PromoteUser

func (t *Team) PromoteUser(ctx context.Context, promoter *User, promotee *User, signedVaultKeys VaultKeyPair) error

type TeamFull

type TeamFull struct {
	*Team
	Vaults  []*VaultFull    `json:"vaults"`
	Users   []*TeamUserFull `json:"users"`
	Invites []*Invite       `json:"invites"`
}

type TeamUserFull

type TeamUserFull struct {
	Team           string `scaneo:"pk" json:"-"`
	User           string `scaneo:"pk" json:"id"`
	Admin          bool   `json:"admin"`
	AccessRequired bool   `json:"-"`
	FullName       string `json:"fullname"`
	PublicKey      []byte `json:"public_key"`
}

type Token

type Token struct {
	Id        string    `scaneo:"pk" json:"id"`
	Type      int       `json:"-"`
	User      string    `json:"-"`
	Extra     string    `json:"extra,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func FindToken

func FindToken(ctx context.Context, id string) (*Token, error)

func FindTokensForUser

func FindTokensForUser(ctx context.Context, user string) (tokens []*Token)

func (*Token) ConfirmEmail

func (t *Token) ConfirmEmail(ctx context.Context) (u *User, err error)

type User

type User struct {
	Id               string      `scaneo:"pk" json:"id"`
	Email            string      `json:"email"`
	UnconfirmedEmail string      `json:"-"`
	HashPass         []byte      `json:"-"`
	FullName         string      `json:"fullname"`
	ConfirmedAt      pq.NullTime `json:"confirmed_at,omitempty"`
	LockedAt         pq.NullTime `json:"locked_at,omitempty"`
	SignInCount      int         `json:"sign_in_count"`
	FailedAttempts   int         `json:"failed_attempts"`
	PublicKey        []byte      `json:"public_key"`
	Key              []byte      `json:"-"`
	CreatedAt        time.Time   `json:"created_at"`
	UpdatedAt        time.Time   `json:"updated_at"`
}

func FindUser

func FindUser(ctx context.Context, id string) (u *User, err error)

func FindUserByEmail

func FindUserByEmail(ctx context.Context, email string) (u *User, err error)

func (*User) ChangeEmail

func (u *User) ChangeEmail(ctx context.Context, email string) (t *Token, err error)

func (*User) ChangePassword

func (u *User) ChangePassword(ctx context.Context, password string, keyPack []byte) error

func (*User) CheckPassword

func (u *User) CheckPassword(pass string) error

func (*User) CreateTeam

func (u *User) CreateTeam(ctx context.Context, name string, signedVaultKeys VaultKeyPair) (t *Team, err error)

func (*User) GetTeam

func (u *User) GetTeam(ctx context.Context, tid string) (t *Team, err error)

func (*User) GetTeamFull

func (u *User) GetTeamFull(ctx context.Context, tid string) (tf *TeamFull, err error)

func (*User) GetTeams

func (u *User) GetTeams(ctx context.Context) ([]*Team, error)

func (*User) GetUserFull

func (u *User) GetUserFull(ctx context.Context) (*UserFull, error)

func (*User) GetVerificationToken

func (u *User) GetVerificationToken(ctx context.Context) (t *Token, err error)

type UserFull

type UserFull struct {
	*User
	Teams []*Team `json:"teams"`
}

type Vault

type Vault struct {
	Id        string    `scaneo:"pk" json:"id"`
	Team      string    `scaneo:"pk" json:"-"`
	Version   uint32    `json:"version"`
	PublicKey []byte    `json:"public_key"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func (*Vault) AddSecret

func (v *Vault) AddSecret(ctx context.Context, s *Secret) error

func (*Vault) AddSecretList added in v0.0.2

func (v *Vault) AddSecretList(ctx context.Context, sl []*Secret) error

func (Vault) AddUsers

func (v Vault) AddUsers(ctx context.Context, userKeys map[string][]byte) error

func (*Vault) DeleteSecret

func (v *Vault) DeleteSecret(ctx context.Context, sid string) error

func (Vault) GetSecret

func (v Vault) GetSecret(ctx context.Context, sid string) (s *Secret, err error)

func (Vault) GetSecrets

func (v Vault) GetSecrets(ctx context.Context) ([]*Secret, error)

func (Vault) GetSecretsAllVersions added in v0.0.12

func (v Vault) GetSecretsAllVersions(ctx context.Context) ([]*Secret, error)

func (Vault) GetUserIds

func (v Vault) GetUserIds(ctx context.Context) (uids []string, err error)

func (*Vault) GetVaultFullForUser

func (v *Vault) GetVaultFullForUser(ctx context.Context, u *User) (vf *VaultFull, err error)

func (Vault) RemoveUser

func (v Vault) RemoveUser(ctx context.Context, username string) error

func (*Vault) UpdateSecret

func (v *Vault) UpdateSecret(ctx context.Context, s *Secret) error

type VaultFull

type VaultFull struct {
	Vault
	Key   []byte   `json:"key"`
	Users []string `json:"users"`
}

type VaultKeyPair

type VaultKeyPair struct {
	PublicKey []byte            `json:"public_key"`
	Keys      map[string][]byte `json:"keys"`
}

Jump to

Keyboard shortcuts

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