feat: limit the ability of common user to set the remaining usage times of token (#9)
This commit is contained in:
parent
faf84d833d
commit
03491029f2
@ -76,6 +76,7 @@ func GetToken(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AddToken(c *gin.Context) {
|
func AddToken(c *gin.Context) {
|
||||||
|
isAdmin := c.GetInt("role") >= common.RoleAdminUser
|
||||||
token := model.Token{}
|
token := model.Token{}
|
||||||
err := c.ShouldBindJSON(&token)
|
err := c.ShouldBindJSON(&token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -93,14 +94,16 @@ func AddToken(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
cleanToken := model.Token{
|
cleanToken := model.Token{
|
||||||
UserId: c.GetInt("id"),
|
UserId: c.GetInt("id"),
|
||||||
Name: token.Name,
|
Name: token.Name,
|
||||||
Key: common.GetUUID(),
|
Key: common.GetUUID(),
|
||||||
CreatedTime: common.GetTimestamp(),
|
CreatedTime: common.GetTimestamp(),
|
||||||
AccessedTime: common.GetTimestamp(),
|
AccessedTime: common.GetTimestamp(),
|
||||||
ExpiredTime: token.ExpiredTime,
|
ExpiredTime: token.ExpiredTime,
|
||||||
RemainTimes: token.RemainTimes,
|
}
|
||||||
UnlimitedTimes: token.UnlimitedTimes,
|
if isAdmin {
|
||||||
|
cleanToken.RemainTimes = token.RemainTimes
|
||||||
|
cleanToken.UnlimitedTimes = token.UnlimitedTimes
|
||||||
}
|
}
|
||||||
err = cleanToken.Insert()
|
err = cleanToken.Insert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -136,6 +139,7 @@ func DeleteToken(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UpdateToken(c *gin.Context) {
|
func UpdateToken(c *gin.Context) {
|
||||||
|
isAdmin := c.GetInt("role") >= common.RoleAdminUser
|
||||||
userId := c.GetInt("id")
|
userId := c.GetInt("id")
|
||||||
statusOnly := c.Query("status_only")
|
statusOnly := c.Query("status_only")
|
||||||
token := model.Token{}
|
token := model.Token{}
|
||||||
@ -177,8 +181,10 @@ func UpdateToken(c *gin.Context) {
|
|||||||
// If you add more fields, please also update token.Update()
|
// If you add more fields, please also update token.Update()
|
||||||
cleanToken.Name = token.Name
|
cleanToken.Name = token.Name
|
||||||
cleanToken.ExpiredTime = token.ExpiredTime
|
cleanToken.ExpiredTime = token.ExpiredTime
|
||||||
cleanToken.RemainTimes = token.RemainTimes
|
if isAdmin {
|
||||||
cleanToken.UnlimitedTimes = token.UnlimitedTimes
|
cleanToken.RemainTimes = token.RemainTimes
|
||||||
|
cleanToken.UnlimitedTimes = token.UnlimitedTimes
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = cleanToken.Update()
|
err = cleanToken.Update()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { Button, Form, Header, Segment } from 'semantic-ui-react';
|
import { Button, Form, Header, Segment } from 'semantic-ui-react';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
import { API, showError, showSuccess, timestamp2string } from '../../helpers';
|
import { API, isAdmin, showError, showSuccess, timestamp2string } from '../../helpers';
|
||||||
|
|
||||||
const EditToken = () => {
|
const EditToken = () => {
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
@ -12,8 +12,9 @@ const EditToken = () => {
|
|||||||
name: '',
|
name: '',
|
||||||
remain_times: 0,
|
remain_times: 0,
|
||||||
expired_time: -1,
|
expired_time: -1,
|
||||||
unlimited_times: false,
|
unlimited_times: false
|
||||||
};
|
};
|
||||||
|
const isAdminUser = isAdmin();
|
||||||
const [inputs, setInputs] = useState(originInputs);
|
const [inputs, setInputs] = useState(originInputs);
|
||||||
const { name, remain_times, expired_time, unlimited_times } = inputs;
|
const { name, remain_times, expired_time, unlimited_times } = inputs;
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ const EditToken = () => {
|
|||||||
|
|
||||||
const setUnlimitedTimes = () => {
|
const setUnlimitedTimes = () => {
|
||||||
setInputs({ ...inputs, unlimited_times: !unlimited_times });
|
setInputs({ ...inputs, unlimited_times: !unlimited_times });
|
||||||
}
|
};
|
||||||
|
|
||||||
const loadToken = async () => {
|
const loadToken = async () => {
|
||||||
let res = await API.get(`/api/token/${tokenId}`);
|
let res = await API.get(`/api/token/${tokenId}`);
|
||||||
@ -93,7 +94,7 @@ const EditToken = () => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Segment loading={loading}>
|
<Segment loading={loading}>
|
||||||
<Header as='h3'>{isEdit ? "更新令牌信息" : "创建新的令牌"}</Header>
|
<Header as='h3'>{isEdit ? '更新令牌信息' : '创建新的令牌'}</Header>
|
||||||
<Form autoComplete='off'>
|
<Form autoComplete='off'>
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Form.Input
|
<Form.Input
|
||||||
@ -106,21 +107,25 @@ const EditToken = () => {
|
|||||||
required={!isEdit}
|
required={!isEdit}
|
||||||
/>
|
/>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Form.Field>
|
{
|
||||||
<Form.Input
|
isAdminUser && <>
|
||||||
label='剩余次数'
|
<Form.Field>
|
||||||
name='remain_times'
|
<Form.Input
|
||||||
placeholder={'请输入剩余次数'}
|
label='剩余次数'
|
||||||
onChange={handleInputChange}
|
name='remain_times'
|
||||||
value={remain_times}
|
placeholder={'请输入剩余次数'}
|
||||||
autoComplete='off'
|
onChange={handleInputChange}
|
||||||
type='number'
|
value={remain_times}
|
||||||
disabled={unlimited_times}
|
autoComplete='off'
|
||||||
/>
|
type='number'
|
||||||
</Form.Field>
|
disabled={unlimited_times}
|
||||||
<Button type={'button'} onClick={() => {
|
/>
|
||||||
setUnlimitedTimes();
|
</Form.Field>
|
||||||
}}>{unlimited_times ? "取消无限次" : "设置为无限次"}</Button>
|
<Button type={'button'} onClick={() => {
|
||||||
|
setUnlimitedTimes();
|
||||||
|
}}>{unlimited_times ? '取消无限次' : '设置为无限次'}</Button>
|
||||||
|
</>
|
||||||
|
}
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Form.Input
|
<Form.Input
|
||||||
label='过期时间'
|
label='过期时间'
|
||||||
|
Loading…
Reference in New Issue
Block a user