diff --git a/src/api.go b/src/api.go new file mode 100644 index 0000000..b0d15fb --- /dev/null +++ b/src/api.go @@ -0,0 +1,30 @@ +package main +import ( + "net/http" + "encoding/json" +) +type accountApiResponse struct { + Username string `json:"username"` + DiscordUserId string `json:"discordUserId"` + Email string `json:"email"` +} +const apiPassword string = "hezgf42gfgwfg" +func accountApi(w http.ResponseWriter, r *http.Request) { + var accountKey string = r.FormValue("accountkey") + var password string = r.FormValue("password") + if password != secret.ApiToken { + http.Error(w, "Error 401 false password", 401) + return + } + var account accountApiResponse + var success bool + var usernameInter interface{} + usernameInter, success = sessions.GetStringKey(accountKey) + account.Username = usernameInter.(string) + if !success { + http.Error(w, "Error 400 invalid session", 400) + } + db.QueryRow("SELECT email,discordUserId FROM account WHERE username = ?", account.Username).Scan(&account.Email, &account.DiscordUserId) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(account) +} diff --git a/src/login.go b/src/login.go index 035d5ad..a99cc6f 100644 --- a/src/login.go +++ b/src/login.go @@ -32,6 +32,7 @@ func login(w http.ResponseWriter, r *http.Request) { cookie := http.Cookie{ Name: sessionName, Value: key, + Domain: "redstoneunion.de", Expires: time.Now().Add(sessionTimeout), HttpOnly: true, Secure: true, diff --git a/src/main.go b/src/main.go index 176bf5b..30c4d5d 100644 --- a/src/main.go +++ b/src/main.go @@ -30,6 +30,7 @@ type secrets_json struct { DiscordServerID string `json:"discordServerID"` MoodleToken string `json:"moodleToken"` GiteaToken string `json:"giteaToken"` + ApiToken string `json:"apiToken"` } type config_json struct { CreateGiteaAccount bool `json:"createGiteaAccount"` @@ -81,6 +82,7 @@ func main() { http.HandleFunc("/register", register) http.HandleFunc("/submit", submit) http.HandleFunc("/login", login) + http.HandleFunc("/api/accountinfo", accountApi) http.ListenAndServe(":" + fmt.Sprint(config.Port), nil) }