pase/store/store.go
2026-05-04 20:52:35 +00:00

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)
}