package auth import ( "auth_service/api/jwt" "auth_service/database" "auth_service/model" "encoding/json" "fmt" "net/http" "time" ) func Token(w http.ResponseWriter, req *http.Request) { w.Header().Set("Content-Type", "application/json") var request model.TokenRequest decoder := json.NewDecoder(req.Body) decoder.Decode(&request) dbuser, e := database.GetUserByUsername(request.Username) if e != nil { fmt.Fprintf(w, "{\"status\":403,\"error\":\"%v\"}", e) return } if dbuser.Password == request.Password { responseUser := model.UserResponse{ Id: dbuser.Id, Username: dbuser.Username, Email: dbuser.Email, Group: dbuser.Group, IsSuperuser: dbuser.IsSuperuser, } responseUserMarshal, _ := json.Marshal(responseUser) responseUserUnmarshal := make(map[string]any) json.Unmarshal(responseUserMarshal, &responseUserUnmarshal) token, _ := jwt.CreateJWT( jwt.Defaultsecretkey, responseUserUnmarshal, time.Duration(24*time.Hour), ) fmt.Fprintf(w, "{\"token\":\"%s\"}", token) return } fmt.Fprintf(w, "{\"status\":\"403\"}") }