59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package server
|
|
|
|
import (
|
|
"local/dndex/config"
|
|
"local/dndex/server/auth"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func (rest *REST) users(w http.ResponseWriter, r *http.Request) {
|
|
switch r.Method {
|
|
case http.MethodPost:
|
|
default:
|
|
rest.respNotFound(w)
|
|
return
|
|
}
|
|
r.Header.Set("Application-Type", "application/x-www-form-urlencoded")
|
|
switch r.URL.Path {
|
|
case "/register":
|
|
rest.usersRegister(w, r)
|
|
case "/login":
|
|
rest.usersLogin(w, r)
|
|
default:
|
|
rest.respNotFound(w)
|
|
}
|
|
}
|
|
|
|
func (rest *REST) usersRegister(w http.ResponseWriter, r *http.Request) {
|
|
err := auth.Register(rest.g, r)
|
|
if err != nil {
|
|
rest.respError(w, err)
|
|
return
|
|
}
|
|
rest.respOK(w)
|
|
}
|
|
|
|
func (rest *REST) usersLogin(w http.ResponseWriter, r *http.Request) {
|
|
salt := uuid.New().String()
|
|
var token string
|
|
var err error
|
|
switch config.New().Auth {
|
|
case true:
|
|
token, err = auth.Generate(rest.g, r, salt)
|
|
case false:
|
|
token, err = auth.GeneratePlain(rest.g, r)
|
|
}
|
|
if err != nil {
|
|
rest.respError(w, err)
|
|
return
|
|
}
|
|
log.Println("TODO cookie or body?")
|
|
rest.respMap(w, "ok", map[string]string{
|
|
"token": token,
|
|
"salt": salt,
|
|
})
|
|
}
|