thread-master/apps/backend/internal/module/member/domain/usecase.go

93 lines
3.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package domain
import (
"context"
tokenDomain "apps/backend/internal/module/token/domain"
)
// AccountUseCase — stand-alone AccountUseCase 完整能力(數字 uid
type AccountUseCase interface {
// 建立 / 登入
CreateUserAccount(ctx context.Context, req CreateLoginUserRequest) (*Member, *tokenDomain.TokenPair, error)
LoginPassword(ctx context.Context, loginID, password, platform string) (*Member, *tokenDomain.TokenPair, error)
LoginOAuth(ctx context.Context, platform, subject, email, displayName string) (*Member, *tokenDomain.TokenPair, error)
// 查詢
GetUIDByAccount(ctx context.Context, account, platform string) (uid int64, err error)
GetUserAccountInfo(ctx context.Context, account, platform string) (*Identity, error)
GetUserInfo(ctx context.Context, uid int64) (*Member, error)
ListMember(ctx context.Context, page, pageSize int, query, status string) ([]*Member, int64, error)
ListIdentities(ctx context.Context, uid int64) ([]*Identity, error)
FindLoginIDsByUID(ctx context.Context, uid int64) ([]*Identity, error)
// 更新
UpdateUserToken(ctx context.Context, loginID, platform, newPassword string) error
UpdateUserInfo(ctx context.Context, uid int64, patch *UpdateUserInfoPatch) (*Member, error)
UpdateStatus(ctx context.Context, uid int64, status string) (*Member, error)
// Session
Refresh(ctx context.Context, refreshToken string) (*tokenDomain.TokenPair, error)
Logout(refreshToken string)
LogoutAll(ctx context.Context, uid int64) error
// Binding
BindAccount(ctx context.Context, uid int64, loginID, platform, accountType, password string) (*Identity, error)
UnbindAccount(ctx context.Context, uid int64, loginID, platform string) error
BindVerifyEmail(ctx context.Context, uid int64, email string) error
BindVerifyPhone(ctx context.Context, uid int64, phone string) error
// Verify codes
GenerateCode(ctx context.Context, loginID, codeType string) (code string, err error)
VerifyCode(ctx context.Context, loginID, codeType, code string, consume bool) error
// Platform password check (email/phone password)
VerifyPlatformAuthResult(ctx context.Context, loginID, platform, password string) (bool, error)
// OAuth providers
VerifyGoogleIDToken(ctx context.Context, idToken string) (subject, email, name string, err error)
LineCodeToProfile(ctx context.Context, code, redirectURI string) (subject, displayName, email string, err error)
// Convenience Harbor Desk paths
RegisterEmail(ctx context.Context, email, password, displayName string) (*Member, *tokenDomain.TokenPair, error)
Me(ctx context.Context, uid int64) (*Member, error)
// RequestPasswordReset returns code or ErrEmailNotRegistered if unknown email.
RequestPasswordReset(ctx context.Context, email string) (code string, err error)
ResetPassword(ctx context.Context, email, code, newPassword string) error
SendEmailCode(ctx context.Context, uid int64) (string, error)
VerifyEmailCode(ctx context.Context, uid int64, code string) (*Member, error)
}
// CreateLoginUserRequest — stand-alone create account
type CreateLoginUserRequest struct {
LoginID string
Platform string // platform|google|line|apple
AccountType string // email|phone|platform
Password string // for platform
DisplayName string
Email string // profile email if oauth
Phone string
}
// UpdateUserInfoPatch — stand-alone UpdateUserInfoRequest
type UpdateUserInfoPatch struct {
DisplayName *string
Nickname *string
FullName *string
AvatarURL *string
Bio *string
Timezone *string
NotifyEmail *bool
GenderCode *int8
Birthdate *int64
National *string
Address *string
PostCode *string
PreferredLanguage *string
Currency *string
Email *string
Phone *string
CurrentPassword *string
NewPassword *string
}