Files
2025-05-29 01:11:04 +07:00

44 lines
1.1 KiB
Go

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\"}")
}