58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
"database/sql"
|
|
"encoding/json"
|
|
"net/http"
|
|
"os"
|
|
|
|
ory "github.com/ory/client-go"
|
|
)
|
|
|
|
func sqlNullString(s string) sql.NullString {
|
|
if s == "" {
|
|
return sql.NullString{}
|
|
}
|
|
return sql.NullString{String: s, Valid: true}
|
|
}
|
|
|
|
func nullStringToString(ns sql.NullString) string {
|
|
if ns.Valid {
|
|
return ns.String
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func sqlNullUUID(s string) sql.NullString {
|
|
if s == "" {
|
|
return sql.NullString{}
|
|
}
|
|
return sql.NullString{String: s, Valid: true}
|
|
}
|
|
|
|
func writeJSON(w http.ResponseWriter, v interface{}) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
json.NewEncoder(w).Encode(v)
|
|
}
|
|
|
|
func getOryAPIURL() string {
|
|
oryAPIURL := os.Getenv("ORY_API_URL")
|
|
if oryAPIURL == "" {
|
|
tunnelPort := os.Getenv("TUNNEL_PORT")
|
|
if tunnelPort == "" {
|
|
tunnelPort = "4000"
|
|
}
|
|
oryAPIURL = "http://localhost:" + tunnelPort
|
|
}
|
|
return oryAPIURL
|
|
}
|
|
|
|
func isAuthenticated(r *http.Request, oryClient *ory.APIClient) bool {
|
|
cookies := r.Header.Get("Cookie")
|
|
session, _, err := oryClient.FrontendAPI.ToSession(r.Context()).Cookie(cookies).Execute()
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return session != nil && session.Active != nil && *session.Active
|
|
}
|