1
0
mirror of https://github.com/fumiama/paper-manager.git synced 2026-06-09 18:30:23 +08:00

finish backend login

This commit is contained in:
源文雨
2023-03-17 18:29:02 +08:00
parent 5889f0e30a
commit cd571e9e25
12 changed files with 844 additions and 279 deletions

View File

@@ -1,6 +1,7 @@
package api
import (
"encoding/json"
"net/http"
"github.com/fumiama/paper-manager/backend/utils"
@@ -8,8 +9,62 @@ import (
// Handler serves all backend /api call
func Handler(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/api/getLoginSalt" {
if !utils.IsMethod("GET", w, r) {
return
}
username := r.URL.Query().Get("username")
if username == "" {
http.Error(w, "400 Bad Request: empty username", http.StatusBadRequest)
return
}
salt, err := getLoginSalt(username)
if err != nil {
writeresult(w, codeError, nil, err.Error(), typeError)
return
}
writeresult(w, codeSuccess, salt, messageOk, typeSuccess)
return
}
if r.URL.Path == "/api/login" {
if !utils.IsMethod("POST", w, r) {
return
}
defer r.Body.Close()
var body loginbody
err := json.NewDecoder(r.Body).Decode(&body)
if err != nil {
writeresult(w, codeError, nil, err.Error(), typeError)
return
}
r, err := login(body.Username, body.Password)
if err != nil {
writeresult(w, codeError, nil, err.Error(), typeError)
return
}
writeresult(w, codeSuccess, r, messageOk, typeSuccess)
return
}
if r.URL.Path == "/api/getUserInfo" {
if !utils.IsMethod("GET", w, r) {
return
}
token := r.Header.Get("Authorization")
r, err := getUserInfo(token)
if err != nil {
writeresult(w, codeError, nil, err.Error(), typeError)
return
}
writeresult(w, codeSuccess, r, messageOk, typeSuccess)
return
}
if !utils.IsMethod("GET", w, r) {
return
}
http.Error(w, "404 Not Found", http.StatusNotFound)
}
type loginbody struct {
Username string `json:"username"`
Password string `json:"password"`
}