提交
This commit is contained in:
60
internal/app/github_auth/access_token.go
Normal file
60
internal/app/github_auth/access_token.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package github_auth
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"github.com/gofrs/uuid"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func sha256Sign(data string) string {
|
||||
hash := sha256.Sum256([]byte(data))
|
||||
return hex.EncodeToString(hash[:])
|
||||
}
|
||||
|
||||
func GetAccessTokenT() string {
|
||||
t, _ := uuid.NewV4()
|
||||
return t.String()
|
||||
}
|
||||
|
||||
func JsonMap2Token(data map[string]interface{}) string {
|
||||
if len(data) == 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
keys := make([]string, 0, len(data))
|
||||
for k := range data {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
var sb strings.Builder
|
||||
for i, key := range keys {
|
||||
if i > 0 {
|
||||
sb.WriteString(";")
|
||||
}
|
||||
sb.WriteString(key)
|
||||
sb.WriteString("=")
|
||||
sb.WriteString(fmt.Sprintf("%v", data[key]))
|
||||
}
|
||||
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
func JsonMap2SignToken(data map[string]interface{}) string {
|
||||
token := JsonMap2Token(data)
|
||||
if token == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
sign := Token2Sign(token)
|
||||
return token + ";8kp=1:" + sign
|
||||
}
|
||||
|
||||
func Token2Sign(token string) string {
|
||||
sign := sha256Sign(token + fmt.Sprintf(";salt=%s", os.Getenv("TOKEN_SALT")))
|
||||
return sign
|
||||
}
|
||||
Reference in New Issue
Block a user