✨ 新增几大中心功能
This commit is contained in:
84
server/service/system/register_config.go
Normal file
84
server/service/system/register_config.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"git.echol.cn/loser/Go-Web-Template/server/global"
|
||||
sysModel "git.echol.cn/loser/Go-Web-Template/server/model/system"
|
||||
)
|
||||
|
||||
const (
|
||||
paramRegisterMode = "auth.register_mode"
|
||||
paramRegisterRequireCaptcha = "auth.register_require_captcha"
|
||||
paramInviteExpireHours = "auth.invite_code_expire_hours"
|
||||
)
|
||||
|
||||
type RegisterMode string
|
||||
|
||||
const (
|
||||
RegisterModeClosed RegisterMode = "closed"
|
||||
RegisterModeOpen RegisterMode = "open"
|
||||
RegisterModeInvite RegisterMode = "invite"
|
||||
)
|
||||
|
||||
var allowedInviteExpireHours = map[int]bool{
|
||||
12: true,
|
||||
24: true,
|
||||
72: true,
|
||||
168: true,
|
||||
720: true,
|
||||
}
|
||||
|
||||
func getSysParamValue(key string) (string, bool) {
|
||||
var param sysModel.SysParams
|
||||
if err := global.GVA_DB.Where(sysModel.SysParams{Key: key}).First(¶m).Error; err != nil {
|
||||
return "", false
|
||||
}
|
||||
return param.Value, true
|
||||
}
|
||||
|
||||
func GetRegisterMode() RegisterMode {
|
||||
if v, ok := getSysParamValue(paramRegisterMode); ok {
|
||||
switch RegisterMode(v) {
|
||||
case RegisterModeClosed, RegisterModeOpen, RegisterModeInvite:
|
||||
return RegisterMode(v)
|
||||
}
|
||||
}
|
||||
return RegisterModeClosed
|
||||
}
|
||||
|
||||
func GetRegisterRequireCaptcha() bool {
|
||||
if v, ok := getSysParamValue(paramRegisterRequireCaptcha); ok {
|
||||
return v == "1" || v == "true" || v == "on"
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func GetInviteExpireHours() int {
|
||||
if v, ok := getSysParamValue(paramInviteExpireHours); ok {
|
||||
if n, err := strconv.Atoi(v); err == nil {
|
||||
if allowedInviteExpireHours[n] {
|
||||
return n
|
||||
}
|
||||
}
|
||||
}
|
||||
return 24
|
||||
}
|
||||
|
||||
// ---- 供 API 层调用的实例方法(避免跨包直接引用自由函数) ----
|
||||
|
||||
func (s *PublicRegisterService) RegisterMode() RegisterMode {
|
||||
return GetRegisterMode()
|
||||
}
|
||||
|
||||
func (s *PublicRegisterService) RequireCaptcha() bool {
|
||||
return GetRegisterRequireCaptcha()
|
||||
}
|
||||
|
||||
func (s *PublicRegisterService) InviteExpireHours() int {
|
||||
return GetInviteExpireHours()
|
||||
}
|
||||
|
||||
func (s *InviteCodeService) InviteExpireHours() int {
|
||||
return GetInviteExpireHours()
|
||||
}
|
||||
Reference in New Issue
Block a user