- package Auth
-
- import (
- "encoding/json"
- "net/http"
-
- "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database"
- "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models"
- )
-
- type signup struct {
- Username string `json:"username"`
- Password string `json:"password"`
- ConfirmPassword string `json:"confirm_password"`
- PublicKey string `json:"asymmetric_public_key"`
- PrivateKey string `json:"asymmetric_private_key"`
- SymmetricKey string `json:"symmetric_key"`
- }
-
- // Signup to the platform
- func Signup(w http.ResponseWriter, r *http.Request) {
- var (
- user Models.User
- err error
- )
-
- err = json.NewDecoder(r.Body).Decode(&user)
- if err != nil {
- http.Error(w, "Invalid Data", http.StatusUnprocessableEntity)
- return
- }
-
- if user.Username == "" ||
- user.Password == "" ||
- user.ConfirmPassword == "" ||
- len(user.AsymmetricPrivateKey) == 0 ||
- len(user.AsymmetricPublicKey) == 0 ||
- len(user.SymmetricKey) == 0 {
-
- http.Error(w, "Invalid Data", http.StatusUnprocessableEntity)
- return
- }
-
- if user.Password != user.ConfirmPassword {
- http.Error(w, "Invalid Data", http.StatusUnprocessableEntity)
- return
- }
-
- err = Database.CheckUniqueUsername(user.Username)
- if err != nil {
- http.Error(w, "Invalid Data", http.StatusUnprocessableEntity)
- return
- }
-
- user.Password, err = HashPassword(user.Password)
- if err != nil {
- http.Error(w, "Error", http.StatusInternalServerError)
- return
- }
-
- err = Database.CreateUser(&user)
- if err != nil {
- http.Error(w, "Error", http.StatusInternalServerError)
- return
- }
-
- w.WriteHeader(http.StatusNoContent)
- }
|