func (c *AccountCtrl) Signin(w http.ResponseWriter, r *http.Request, _ map[string]string) { var credentials Credentials err := json.NewDecoder(r.Body).Decode(&credentials) if err != nil { c.render.JSONError(w, http.StatusBadRequest, apierrors.BodyDecodingError, err) return } if credentials.Password == "" { c.render.JSONError(w, http.StatusBadRequest, apierrors.BlankParam("password"), err) return } if credentials.Email == "" { c.render.JSONError(w, http.StatusBadRequest, apierrors.BlankParam("email"), err) return } session, err := c.guestInter.Signin(r.RemoteAddr, r.UserAgent(), &credentials) if err != nil { c.render.JSONError(w, http.StatusUnauthorized, apierrors.InvalidCredentials, err) return } cookie := http.Cookie{Name: "authToken", Value: session.AuthToken, Expires: session.ValidTo, Path: "/"} http.SetCookie(w, &cookie) session.BeforeRender() c.render.JSON(w, http.StatusCreated, session) }
func (c *AccountCtrl) Signup(w http.ResponseWriter, r *http.Request, _ map[string]string) { type Params struct { FirstName string `json:"firstName"` LastName string `json:"lastName"` Password string `json:"password"` Email string `json:"email"` } var params Params err := json.NewDecoder(r.Body).Decode(¶ms) if err != nil { c.render.JSONError(w, http.StatusBadRequest, apierrors.BodyDecodingError, err) return } if params.Password == "" { c.render.JSONError(w, http.StatusBadRequest, apierrors.BlankParam("password"), err) return } if params.Email == "" { c.render.JSONError(w, http.StatusBadRequest, apierrors.BlankParam("email"), err) return } user := domain.User{ FirstName: params.FirstName, LastName: params.LastName, Password: params.Password, Email: params.Email, } account, err := c.guestInter.Signup(&user) if err != nil { switch err.(type) { case *internalerrors.ViolatedConstraint: c.render.JSONError(w, 422, apierrors.AlreadyExistingEmail, err) default: c.render.JSONError(w, http.StatusInternalServerError, apierrors.InternalServerError, err) } return } account.BeforeRender() c.render.JSON(w, http.StatusCreated, account) }