47 lines
2.0 KiB
Go
47 lines
2.0 KiB
Go
package domain
|
||
|
||
import (
|
||
"context"
|
||
"time"
|
||
)
|
||
|
||
// Repository — members + multi-platform identities + session helpers.
|
||
type Repository interface {
|
||
NextUID(ctx context.Context) (int64, error)
|
||
|
||
// Member profile
|
||
CreateMember(ctx context.Context, m *Member) error
|
||
FindByUID(ctx context.Context, uid int64) (*Member, error)
|
||
FindByEmail(ctx context.Context, email string) (*Member, error)
|
||
FindByPhone(ctx context.Context, phone string) (*Member, error)
|
||
FindByInviteCode(ctx context.Context, code string) (*Member, error)
|
||
UpdateMember(ctx context.Context, m *Member) error
|
||
ListPage(ctx context.Context, page, pageSize int, query string, status string) (list []*Member, total int64, err error)
|
||
// ListAllMembers — 邀請樹用(全量;小租戶)
|
||
ListAllMembers(ctx context.Context) ([]*Member, error)
|
||
CountActiveAdmins(ctx context.Context) (int64, error)
|
||
|
||
// Identities (login channels)
|
||
CreateIdentity(ctx context.Context, id *Identity) error
|
||
FindIdentity(ctx context.Context, loginID, platform string) (*Identity, error)
|
||
ListIdentitiesByUID(ctx context.Context, uid int64) ([]*Identity, error)
|
||
DeleteIdentity(ctx context.Context, loginID, platform string) error
|
||
UpdateIdentityPassword(ctx context.Context, loginID, platform, passwordHash string) error
|
||
|
||
// Codes / refresh (Mongo durable)
|
||
// SetCode returns false when a recent code exists or persistence fails.
|
||
SetCode(kind, key, code string, ttl time.Duration) bool
|
||
// 驗證碼共用語意(信箱驗證 / 重設密碼相同):
|
||
// CheckCode:碼正確才刪(成功消費);錯誤不刪;過期才刪
|
||
// PeekCode:只檢查不消費(業務前先 Peek,成功後再 Check)
|
||
CheckCode(kind, key, code string) bool
|
||
PeekCode(kind, key, code string) bool
|
||
SaveRefresh(jti string, uid int64, exp time.Time)
|
||
ConsumeRefresh(jti string) (uid int64, ok bool)
|
||
RevokeRefresh(jti string)
|
||
RevokeAllRefreshByUID(ctx context.Context, uid int64) error
|
||
|
||
GetSettings(ctx context.Context, uid int64) (*UserSettings, error)
|
||
SaveSettings(ctx context.Context, uid int64, s *UserSettings) error
|
||
}
|