MCPcopy
hub / github.com/QuantumNous/new-api / UpdateToken

Function UpdateToken

controller/token.go:250–313  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

248}
249
250func UpdateToken(c *gin.Context) {
251 userId := c.GetInt("id")
252 statusOnly := c.Query("status_only")
253 token := model.Token{}
254 err := c.ShouldBindJSON(&token)
255 if err != nil {
256 common.ApiError(c, err)
257 return
258 }
259 if len(token.Name) > 50 {
260 common.ApiErrorI18n(c, i18n.MsgTokenNameTooLong)
261 return
262 }
263 if !token.UnlimitedQuota {
264 if token.RemainQuota < 0 {
265 common.ApiErrorI18n(c, i18n.MsgTokenQuotaNegative)
266 return
267 }
268 maxQuotaValue := int((1000000000 * common.QuotaPerUnit))
269 if token.RemainQuota > maxQuotaValue {
270 common.ApiErrorI18n(c, i18n.MsgTokenQuotaExceedMax, map[string]any{"Max": maxQuotaValue})
271 return
272 }
273 }
274 cleanToken, err := model.GetTokenByIds(token.Id, userId)
275 if err != nil {
276 common.ApiError(c, err)
277 return
278 }
279 if token.Status == common.TokenStatusEnabled {
280 if cleanToken.Status == common.TokenStatusExpired && cleanToken.ExpiredTime <= common.GetTimestamp() && cleanToken.ExpiredTime != -1 {
281 common.ApiErrorI18n(c, i18n.MsgTokenExpiredCannotEnable)
282 return
283 }
284 if cleanToken.Status == common.TokenStatusExhausted && cleanToken.RemainQuota <= 0 && !cleanToken.UnlimitedQuota {
285 common.ApiErrorI18n(c, i18n.MsgTokenExhaustedCannotEable)
286 return
287 }
288 }
289 if statusOnly != "" {
290 cleanToken.Status = token.Status
291 } else {
292 // If you add more fields, please also update token.Update()
293 cleanToken.Name = token.Name
294 cleanToken.ExpiredTime = token.ExpiredTime
295 cleanToken.RemainQuota = token.RemainQuota
296 cleanToken.UnlimitedQuota = token.UnlimitedQuota
297 cleanToken.ModelLimitsEnabled = token.ModelLimitsEnabled
298 cleanToken.ModelLimits = token.ModelLimits
299 cleanToken.AllowIps = token.AllowIps
300 cleanToken.Group = token.Group
301 cleanToken.CrossGroupRetry = token.CrossGroupRetry
302 }
303 err = cleanToken.Update()
304 if err != nil {
305 common.ApiError(c, err)
306 return
307 }

Callers 1

Calls 7

ApiErrorFunction · 0.92
ApiErrorI18nFunction · 0.92
GetTokenByIdsFunction · 0.92
GetTimestampFunction · 0.92
buildMaskedTokenResponseFunction · 0.85
QueryMethod · 0.80
UpdateMethod · 0.45

Tested by 1