package dao import ( "DataShare/global" "DataShare/model" "encoding/json" "errors" "fmt" "github.com/sirupsen/logrus" "strconv" "time" ) //Save token metadata to Redis func CreateAuth(certKey string, td *model.TokenDetails) error { tokenExpire := global.SystemConfig.Redis.Cache.TokenExpire atCreated, err := global.RedisClient.Set(global.RedisDataShare+":"+"auth:"+td.TokenUuid, certKey, time.Second * time.Duration(tokenExpire)).Result() if err != nil { return err } refrushTokenExpire := global.SystemConfig.Redis.Cache.RefrushTokenExpire rtCreated, err := global.RedisClient.Set(global.RedisDataShare+":"+"auth:"+td.RefreshUuid, certKey, time.Second*time.Duration(refrushTokenExpire)).Result() if err != nil { return err } if atCreated == "0" || rtCreated == "0" { return errors.New("no record inserted") } return nil } //Check the metadata saved func FetchAuth(tokenUuid string) (string, error) { userid, err := global.RedisClient.Get(global.RedisDataShare+":"+"auth:"+tokenUuid).Result() if err != nil { return "", err } return userid, nil } //Once a user row in the token table func DeleteTokens(authD *model.AccessDetails) error { //get the refresh uuid refreshUuid := fmt.Sprintf("%s++%s", authD.TokenUuid, authD.AppId) //delete access token deletedAt, err := global.RedisClient.Del(global.RedisDataShare+":"+"auth:"+authD.TokenUuid).Result() if err != nil { return err } //delete refresh token deletedRt, err := global.RedisClient.Del(global.RedisDataShare+":"+"auth:"+refreshUuid).Result() if err != nil { return err } //When the record is deleted, the return value is 1 if deletedAt != 1 || deletedRt != 1 { return errors.New("something went wrong") } return nil } func DeleteRefresh(refreshUuid string) error { //delete refresh token deleted, err := global.RedisClient.Del(global.RedisDataShare+":"+"auth:"+refreshUuid).Result() if err != nil || deleted == 0 { return err } return nil } func DeleteTokenByUserNameAndType(appId string,appSecret string) { sliceCmd := global.RedisClient.Keys(global.RedisDataShare+":"+"auth:"+"uuid_*") if sliceCmd == nil { return } val := sliceCmd.Val() for i:=0;i