remove token via cli
This commit is contained in:
@@ -268,6 +268,19 @@ var UserData = &cli.Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "user-session-revoke",
|
||||||
|
Usage: "Revoke the specified user session",
|
||||||
|
Action: bindAction(revokeUserToken),
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "token",
|
||||||
|
Aliases: []string{"t"},
|
||||||
|
Required: false,
|
||||||
|
Usage: "Specific token content",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "user-session-clear",
|
Name: "user-session-clear",
|
||||||
Usage: "Clear user all sessions",
|
Usage: "Clear user all sessions",
|
||||||
@@ -732,6 +745,26 @@ func createNewUserToken(c *core.CliContext) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func revokeUserToken(c *core.CliContext) error {
|
||||||
|
_, err := initializeSystem(c)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
token := c.String("token")
|
||||||
|
err = clis.UserData.RevokeUserToken(c, token)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.CliErrorf(c, "[user_data.revokeUserToken] error occurs when revoking user token")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
log.CliInfof(c, "[user_data.revokeUserToken] the specified user token has been revoked successfully")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func clearUserTokens(c *core.CliContext) error {
|
func clearUserTokens(c *core.CliContext) error {
|
||||||
_, err := initializeSystem(c)
|
_, err := initializeSystem(c)
|
||||||
|
|
||||||
|
|||||||
@@ -445,6 +445,39 @@ func (l *UserDataCli) CreateNewUserToken(c *core.CliContext, username string, to
|
|||||||
return tokenRecord, token, nil
|
return tokenRecord, token, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RevokeUserToken revokes the specified token of the user
|
||||||
|
func (l *UserDataCli) RevokeUserToken(c *core.CliContext, token string) error {
|
||||||
|
_, claims, err := l.tokens.ParseToken(c, token)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.CliErrorf(c, "[user_data.RevokeUserToken] failed to parse token, because %s", err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
userTokenId, err := utils.StringToInt64(claims.UserTokenId)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.CliErrorf(c, "[user_data.RevokeUserToken] failed to get user token id, because %s", err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
tokenRecord := &models.TokenRecord{
|
||||||
|
Uid: claims.Uid,
|
||||||
|
UserTokenId: userTokenId,
|
||||||
|
CreatedUnixTime: claims.IssuedAt,
|
||||||
|
}
|
||||||
|
|
||||||
|
tokenId := l.tokens.GenerateTokenId(tokenRecord)
|
||||||
|
err = l.tokens.DeleteToken(c, tokenRecord)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[user_data.RevokeUserToken] failed to revoke token \"id:%s\" for user \"uid:%d\", because %s", tokenId, claims.Uid, err.Error())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// ClearUserTokens clears all tokens of the specified user
|
// ClearUserTokens clears all tokens of the specified user
|
||||||
func (l *UserDataCli) ClearUserTokens(c *core.CliContext, username string) error {
|
func (l *UserDataCli) ClearUserTokens(c *core.CliContext, username string) error {
|
||||||
if username == "" {
|
if username == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user