Skip to content

Commit 0883188

Browse files
committed
feat: increase initial root user quota and support INITIAL_ROOT_TOKEN now (songquanpeng#1105)
1 parent 0eb2272 commit 0883188

File tree

6 files changed

+27
-8
lines changed

6 files changed

+27
-8
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ graph LR
381381
19. `ENABLE_METRIC`:是否根据请求成功率禁用渠道,默认不开启,可选值为 `true``false`
382382
20. `METRIC_QUEUE_SIZE`:请求成功率统计队列大小,默认为 `10`
383383
21. `METRIC_SUCCESS_RATE_THRESHOLD`:请求成功率阈值,默认为 `0.8`
384+
22. `INITIAL_ROOT_TOKEN`:如果设置了该值,则在系统首次启动时会自动创建一个值为该环境变量值的 root 用户令牌。
384385

385386
### 命令行参数
386387
1. `--port <port_number>`: 指定服务器监听的端口号,默认为 `3000`

common/config/config.go

+2
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,5 @@ var MetricQueueSize = env.Int("METRIC_QUEUE_SIZE", 10)
136136
var MetricSuccessRateThreshold = env.Float64("METRIC_SUCCESS_RATE_THRESHOLD", 0.8)
137137
var MetricSuccessChanSize = env.Int("METRIC_SUCCESS_CHAN_SIZE", 1024)
138138
var MetricFailChanSize = env.Int("METRIC_FAIL_CHAN_SIZE", 128)
139+
140+
var InitialRootToken = os.Getenv("INITIAL_ROOT_TOKEN")

model/main.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func CreateRootAccountIfNeed() error {
2323
var user User
2424
//if user.Status != util.UserStatusEnabled {
2525
if err := DB.First(&user).Error; err != nil {
26-
logger.SysLog("no user exists, create a root user for you: username is root, password is 123456")
26+
logger.SysLog("no user exists, creating a root user for you: username is root, password is 123456")
2727
hashedPassword, err := common.Password2Hash("123456")
2828
if err != nil {
2929
return err
@@ -35,9 +35,25 @@ func CreateRootAccountIfNeed() error {
3535
Status: common.UserStatusEnabled,
3636
DisplayName: "Root User",
3737
AccessToken: helper.GetUUID(),
38-
Quota: 100000000,
38+
Quota: 500000000000000,
3939
}
4040
DB.Create(&rootUser)
41+
if config.InitialRootToken != "" {
42+
logger.SysLog("creating initial root token as requested")
43+
token := Token{
44+
Id: 1,
45+
UserId: rootUser.Id,
46+
Key: config.InitialRootToken,
47+
Status: common.TokenStatusEnabled,
48+
Name: "Initial Root Token",
49+
CreatedTime: helper.GetTimestamp(),
50+
AccessedTime: helper.GetTimestamp(),
51+
ExpiredTime: -1,
52+
RemainQuota: 500000000000000,
53+
UnlimitedQuota: true,
54+
}
55+
DB.Create(&token)
56+
}
4157
}
4258
return nil
4359
}

model/redemption.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Redemption struct {
1414
Key string `json:"key" gorm:"type:char(32);uniqueIndex"`
1515
Status int `json:"status" gorm:"default:1"`
1616
Name string `json:"name" gorm:"index"`
17-
Quota int64 `json:"quota" gorm:"default:100"`
17+
Quota int64 `json:"quota" gorm:"bigint;default:100"`
1818
CreatedTime int64 `json:"created_time" gorm:"bigint"`
1919
RedeemedTime int64 `json:"redeemed_time" gorm:"bigint"`
2020
Count int `json:"count" gorm:"-:all"` // only for api request

model/token.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ type Token struct {
2020
CreatedTime int64 `json:"created_time" gorm:"bigint"`
2121
AccessedTime int64 `json:"accessed_time" gorm:"bigint"`
2222
ExpiredTime int64 `json:"expired_time" gorm:"bigint;default:-1"` // -1 means never expired
23-
RemainQuota int64 `json:"remain_quota" gorm:"default:0"`
23+
RemainQuota int64 `json:"remain_quota" gorm:"bigint;default:0"`
2424
UnlimitedQuota bool `json:"unlimited_quota" gorm:"default:false"`
25-
UsedQuota int64 `json:"used_quota" gorm:"default:0"` // used quota
25+
UsedQuota int64 `json:"used_quota" gorm:"bigint;default:0"` // used quota
2626
}
2727

2828
func GetAllUserTokens(userId int, startIdx int, num int) ([]*Token, error) {

model/user.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ type User struct {
2626
WeChatId string `json:"wechat_id" gorm:"column:wechat_id;index"`
2727
VerificationCode string `json:"verification_code" gorm:"-:all"` // this field is only for Email verification, don't save it to database!
2828
AccessToken string `json:"access_token" gorm:"type:char(32);column:access_token;uniqueIndex"` // this token is for system management
29-
Quota int64 `json:"quota" gorm:"type:int;default:0"`
30-
UsedQuota int64 `json:"used_quota" gorm:"type:int;default:0;column:used_quota"` // used quota
31-
RequestCount int `json:"request_count" gorm:"type:int;default:0;"` // request number
29+
Quota int64 `json:"quota" gorm:"bigint;default:0"`
30+
UsedQuota int64 `json:"used_quota" gorm:"bigint;default:0;column:used_quota"` // used quota
31+
RequestCount int `json:"request_count" gorm:"type:int;default:0;"` // request number
3232
Group string `json:"group" gorm:"type:varchar(32);default:'default'"`
3333
AffCode string `json:"aff_code" gorm:"type:varchar(32);column:aff_code;uniqueIndex"`
3434
InviterId int `json:"inviter_id" gorm:"type:int;column:inviter_id;index"`

0 commit comments

Comments
 (0)