Select Git revision
BuchungTabelle.js
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
main.go 1.49 KiB
package main
import (
"fmt"
"os"
"time"
"github.com/golang-jwt/jwt/v5"
)
var secretKey = []byte("myaktion-go-secret-key")
func createToken(username string) (string, error) {
claims := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"sub": username,
"iss": "myaktion-go",
"aud": "organizer",
"exp": time.Now().Add(time.Hour).Unix(),
"iat": time.Now().Unix(),
})
fmt.Printf("Token claims added: %+v\n", claims)
tokenString, err := claims.SignedString(secretKey)
if err != nil {
return "", err
}
return tokenString, nil
}
func readUserFromToken(tokenString string) (string, error) {
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return secretKey, nil
})
if err != nil {
return "", err
} else {
if username, err := token.Claims.GetSubject(); err != nil {
return "", err
} else {
return username, nil
}
}
}
func isValid(tokenString string) (bool, error) {
_, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return secretKey, nil
})
if err != nil {
return false, err
}
return true, nil
}
func main() {
if len(os.Args) >= 2 {
username := os.Args[1]
tokenString, err := createToken(username)
if err != nil {
fmt.Printf("Unable to create token: %+v\n", err)
} else {
fmt.Printf("%+v\n", tokenString)
//user, _ := readUserFromToken(tokenString)
//fmt.Printf("found user in token: %+v\n", user)
}
} else {
fmt.Println("Please pass a username as command-line argument")
}
}