Skip to content
Snippets Groups Projects
Select Git revision
  • 3882c502ef60dc35c0fa4b237c17aad8bd4501d5
  • main default protected
  • dev-frontend
  • dev-backend
4 results

BuchungTabelle.js

Blame
  • 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")
    	}
    }