implemented labor 08

main
Oliver Stolle 2026-06-01 21:35:06 +00:00
parent b815fbc101
commit 9173b0e33a
3 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,25 @@
package main
import (
"net/http"
)
type loginHandler int
type logoutHandler string
func (a loginHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Login"))
}
func (b logoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Logout"))
}
func main() {
var a loginHandler
var b logoutHandler
mux := http.NewServeMux()
mux.Handle("/login", a)
mux.Handle("/logout", b)
http.ListenAndServe("localhost:8080", mux)
}

View File

@ -0,0 +1,49 @@
package main
import (
"net/http"
"github.com/google/uuid"
)
type createHandler int
type showHandler int
type deleteHandler int
func (a createHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
uuid := uuid.New().String()
cookie := &http.Cookie{Name: "keks", Value: uuid}
http.SetCookie(w, cookie)
w.Write([]byte("Cookie erstellt!"))
}
func (b showHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("keks")
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
w.Write([]byte("Keks Wert: " + cookie.Value))
}
func (b deleteHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("keks")
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
cookie.MaxAge = -1
http.SetCookie(w, cookie)
w.Write([]byte("Keks gelöscht"))
}
func main() {
var a createHandler
var b showHandler
var c deleteHandler
mux := http.NewServeMux()
mux.Handle("/create-cookie", a)
mux.Handle("/show-cookie", b)
mux.Handle("/delete-cookie", c)
http.ListenAndServe("localhost:8080", mux)
}

View File

@ -0,0 +1,71 @@
package main
import (
"encoding/json"
"net/http"
"github.com/google/uuid"
)
type signupHandler int
type whoAmIHandler int
type User struct {
Username string `json:"username"`
Nickname string `json:"nickname"`
Admin bool `json:"admin"`
}
var Users map[string]User
func (a signupHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
var user User
if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
http.Error(w, "Daten konnten nicht verarbeitet werden.", http.StatusBadRequest)
return
}
uuid := uuid.New().String()
Users[uuid] = user
w.WriteHeader(http.StatusOK)
w.Write([]byte("Registrierung erfolgreich"))
cookie := &http.Cookie{Name: "uuid", Value: uuid}
http.SetCookie(w, cookie)
}
func (b whoAmIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("uuid")
if err != nil {
w.Write([]byte("Keinen Login Cookie gefunden."))
return
}
if user, ok := Users[cookie.Value]; ok {
nickname := user.Nickname
admin := user.Admin
var status string
if admin {
status = "Admin"
} else {
status = "normaler Benutzer"
}
w.Write([]byte("Hallo " + nickname + "!\nDu bist als " + status + " registriert."))
} else {
w.Write([]byte("User nicht gefunden!"))
}
}
func main() {
Users = make(map[string]User)
var a signupHandler
var b whoAmIHandler
mux := http.NewServeMux()
mux.Handle("/signup", a)
mux.Handle("/whoami", b)
http.ListenAndServe("localhost:8080", mux)
}