54 lines
2.5 KiB
Go
54 lines
2.5 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type Store interface {
|
|
// CreateUser inserts a new row into the users table.
|
|
// The method overrides the CreatedAt and UpdatedAt fields.
|
|
CreateUser(ctx context.Context, u *User) error
|
|
GetUserByID(ctx context.Context, id string) (*User, error)
|
|
GetUserByEmail(ctx context.Context, email string) (*User, error)
|
|
GetUserByUsername(ctx context.Context, username string) (*User, error)
|
|
UpdateUser(ctx context.Context, u *User) error
|
|
|
|
UpsertCredential(ctx context.Context, c *Credential) error
|
|
GetCredential(ctx context.Context, userID string, t CredentialType) (*Credential, error)
|
|
DeleteCredential(ctx context.Context, userID string, t CredentialType) error
|
|
|
|
CreateSession(ctx context.Context, s *Session) error
|
|
GetSession(ctx context.Context, id string) (*Session, error)
|
|
DeleteSession(ctx context.Context, id string) error
|
|
DeleteUserSessions(ctx context.Context, userID string) error
|
|
|
|
CreateToken(ctx context.Context, t *Token) error
|
|
ConsumeToken(ctx context.Context, hashedValue string, purpose TokenPurpose) (*Token, error)
|
|
DeleteExpiredTokens(ctx context.Context, before time.Time) error
|
|
|
|
CreatePermission(ctx context.Context, p *Permission) error
|
|
GetPermissionByName(ctx context.Context, name string) (*Permission, error)
|
|
ListPermissions(ctx context.Context) ([]*Permission, error)
|
|
DeletePermission(ctx context.Context, id string) error
|
|
|
|
CreateRole(ctx context.Context, r *Role) error
|
|
GetRoleByName(ctx context.Context, name string) (*Role, error)
|
|
ListRoles(ctx context.Context) ([]*Role, error)
|
|
DeleteRole(ctx context.Context, id string) error
|
|
|
|
AssignPermissionToRole(ctx context.Context, roleID, permissionID string) error
|
|
RevokePermissionFromRole(ctx context.Context, roleID, permissionID string) error
|
|
ListRolePermissions(ctx context.Context, roleID string) ([]*Permission, error)
|
|
|
|
AssignRoleToUser(ctx context.Context, userID, roleID string) error
|
|
RevokeRoleFromUser(ctx context.Context, userID, roleID string) error
|
|
ListUserRoles(ctx context.Context, userID string) ([]*Role, error)
|
|
|
|
SetUserPermission(ctx context.Context, userID, permissionID string, effect PermissionEffect) error
|
|
DeleteUserPermission(ctx context.Context, userID, permissionID string) error
|
|
ListUserPermissions(ctx context.Context, userID string) ([]*UserPermission, error)
|
|
|
|
UserHasPermissionViaRole(ctx context.Context, userID, permissionName string) (bool, error)
|
|
ListEffectivePermissions(ctx context.Context, userID string) ([]*Permission, error)
|
|
}
|