44 lines
1.1 KiB
Go
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\"}")
|
|
}
|