85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
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()
|
|
}
|