- RegisterPage 传入 RegistrationEnabled 标志到模板 - 注册关闭时隐藏输入框和按钮,显示“当前暂不开放注册”提示 - 保留“已有账号?立即登录”链接 - API 层已有拦截(AuthService.Register 返回 403),无需修改 - authUseCase 接口新增 IsRegistrationEnabled 方法(ISP)
58 lines
2.3 KiB
Go
58 lines
2.3 KiB
Go
package controller
|
||
|
||
import (
|
||
"metazone.cc/metalab/internal/middleware"
|
||
"metazone.cc/metalab/internal/model"
|
||
"metazone.cc/metalab/internal/service"
|
||
)
|
||
|
||
// authUseCase AuthController 对 AuthService 的最小依赖(ISP:5 个方法)
|
||
type authUseCase interface {
|
||
Register(req model.RegisterRequest, regIP string) (string, string, *model.User, error)
|
||
Login(req model.LoginRequest, loginIP string) (string, string, *model.User, error)
|
||
ConfirmRestore(req model.LoginRequest, loginIP string) (string, string, *model.User, error)
|
||
CheckEmail(email string) (bool, error)
|
||
IsRegistrationEnabled() bool
|
||
}
|
||
|
||
// tokenRefresher AuthController 对 TokenService 的最小依赖(ISP:1 个方法)
|
||
type tokenRefresher interface {
|
||
RefreshAccessToken(refreshTokenStr string) (string, *model.User, error)
|
||
}
|
||
|
||
// rateLimiter AuthController 对 RateLimiter 的最小依赖(ISP:3 个方法)
|
||
type rateLimiter interface {
|
||
AllowAccount(email string) (middleware.RateLimitResult, func())
|
||
AllowIP(ip string) (middleware.RateLimitResult, func())
|
||
Clear(email, ip string)
|
||
}
|
||
|
||
// postUseCase PostController 对 PostService 的最小依赖(ISP:7 个方法)
|
||
type postUseCase interface {
|
||
Create(userID uint, title, body string) (*model.Post, error)
|
||
GetByID(id uint) (*model.Post, error)
|
||
List(keyword string, page, pageSize int) ([]model.Post, int64, error)
|
||
Update(postID uint, title, body string) error
|
||
Delete(postID uint) error
|
||
SubmitForAudit(postID uint) error
|
||
IsPostAccessible(userID uint, role string, postUserID uint) bool
|
||
}
|
||
|
||
// studioUseCase StudioController 对 PostService 的最小依赖(ISP:8 个方法)
|
||
type studioUseCase interface {
|
||
Create(userID uint, title, body string) (*model.Post, error)
|
||
GetByID(id uint) (*model.Post, error)
|
||
Update(postID uint, title, body string) error
|
||
Delete(postID uint) error
|
||
SubmitForAudit(postID uint) error
|
||
ListByUser(userID uint, status string, page, pageSize int) ([]model.Post, int64, error)
|
||
GetOverview(userID uint) (*service.StudioOverview, error)
|
||
IsPostAccessible(userID uint, role string, postUserID uint) bool
|
||
}
|
||
|
||
// spaceUseCase SpaceController 对 SpaceService 的最小依赖(ISP:2 个方法)
|
||
type spaceUseCase interface {
|
||
GetSpaceUser(uid uint) (*model.User, error)
|
||
GetPostsByUser(uid uint, page, pageSize int) ([]model.Post, int64, error)
|
||
}
|