1
0
mirror of https://github.com/haiwen/seafile-server.git synced 2025-06-27 23:46:48 +00:00
seafile-server/fileserver/utils/utils.go
feiniks 61126d108c
Add json exp (#699)
* Add json exp

* Add json exp and add gen jwt token

* Gen seahub and notif jwt token

* Add exp for gen jwt token

* Delete gen_jwt_token API

* Delete set exp to 72 hour

---------

Co-authored-by: 杨赫然 <heran.yang@seafile.com>
2024-09-18 17:59:24 +08:00

82 lines
1.7 KiB
Go

package utils
import (
"fmt"
"time"
jwt "github.com/golang-jwt/jwt/v5"
"github.com/google/uuid"
"github.com/haiwen/seafile-server/fileserver/option"
)
func IsValidUUID(u string) bool {
_, err := uuid.Parse(u)
return err == nil
}
func IsObjectIDValid(objID string) bool {
if len(objID) != 40 {
return false
}
for i := 0; i < len(objID); i++ {
c := objID[i]
if (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') {
continue
}
return false
}
return true
}
type SeahubClaims struct {
Exp int64 `json:"exp"`
IsInternal bool `json:"is_internal"`
jwt.RegisteredClaims
}
func (*SeahubClaims) Valid() error {
return nil
}
func GenSeahubJWTToken() (string, error) {
claims := new(SeahubClaims)
claims.Exp = time.Now().Add(time.Second * 300).Unix()
claims.IsInternal = true
token := jwt.NewWithClaims(jwt.GetSigningMethod("HS256"), claims)
tokenString, err := token.SignedString([]byte(option.JWTPrivateKey))
if err != nil {
err := fmt.Errorf("failed to gen seahub jwt token: %w", err)
return "", err
}
return tokenString, nil
}
type MyClaims struct {
Exp int64 `json:"exp"`
RepoID string `json:"repo_id"`
UserName string `json:"username"`
jwt.RegisteredClaims
}
func (*MyClaims) Valid() error {
return nil
}
func GenNotifJWTToken(repoID, user string, exp int64) (string, error) {
claims := new(MyClaims)
claims.Exp = exp
claims.RepoID = repoID
claims.UserName = user
token := jwt.NewWithClaims(jwt.GetSigningMethod("HS256"), claims)
tokenString, err := token.SignedString([]byte(option.JWTPrivateKey))
if err != nil {
err := fmt.Errorf("failed to gen jwt token for repo %s: %w", repoID, err)
return "", err
}
return tokenString, nil
}