Added mail verification for user creation
parent
2a63114ffb
commit
ae65dcfc98
|
@ -24,7 +24,7 @@ type RegisterInput struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewUser(c *fiber.Ctx) error {
|
func NewUser(c *fiber.Ctx) error {
|
||||||
// swagger:operation POST /users User usersNewUser
|
// swagger:operation POST /users User user
|
||||||
// ---
|
// ---
|
||||||
// summary: Create new user
|
// summary: Create new user
|
||||||
// produces:
|
// produces:
|
||||||
|
@ -59,7 +59,6 @@ func NewUser(c *fiber.Ctx) error {
|
||||||
// type: string
|
// type: string
|
||||||
// responses:
|
// responses:
|
||||||
// '201':
|
// '201':
|
||||||
// description: user created
|
|
||||||
// "$ref": "#/definitions/User"
|
// "$ref": "#/definitions/User"
|
||||||
// '400':
|
// '400':
|
||||||
// description: format is not correct
|
// description: format is not correct
|
||||||
|
@ -128,52 +127,15 @@ func NewUser(c *fiber.Ctx) error {
|
||||||
return c.SendStatus(fiber.StatusInternalServerError)
|
return c.SendStatus(fiber.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
// account activation via email
|
userActionId, err := createUserAction(user.Id)
|
||||||
|
|
||||||
userActivationId, err := createUserActivation(user.Id)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.SendStatus(fiber.StatusInternalServerError)
|
return c.SendStatus(fiber.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
type JsonMessage struct {
|
rabbitmq.PublishMail(user.Email, 0, user.LanguageId, json.RawMessage(`{"name": "`+user.Name+`",
|
||||||
Key string `json:"k"`
|
|
||||||
Mail string `json:"m"`
|
|
||||||
TemplateId int `json:"t"`
|
|
||||||
LanguageId int `json:"l"`
|
|
||||||
BodyData *json.RawMessage `json:"d"`
|
|
||||||
}
|
|
||||||
|
|
||||||
bodyData := json.RawMessage(`{"name": "` + user.Name + `",
|
|
||||||
"email": "`+user.Email+`",
|
"email": "`+user.Email+`",
|
||||||
"url": "http://localhost:3000/api/v1/user/activate/` + userActivationId + `"}`)
|
"url": "http://localhost:3000/api/v1/user/action/0/`+userActionId+`"}`))
|
||||||
|
|
||||||
js := JsonMessage{Key: "mykey", Mail: "app@roese.dev", TemplateId: 0, LanguageId: user.LanguageId, BodyData: &bodyData}
|
|
||||||
|
|
||||||
reqBody, err := json.MarshalIndent(&js, "", "\t")
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Infoln("error reqBody", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
rabbitmq.Publish(string(reqBody))
|
|
||||||
|
|
||||||
/*resp, err := http.Post(cfg.Mail.Host+"/send", "application/json", bytes.NewBuffer(reqBody))
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Infoln("err http post", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Infoln("err reading body", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Infoln("body", body)
|
|
||||||
log.Infoln("StatusCode", resp.StatusCode)*/
|
|
||||||
|
|
||||||
sessionId, err := createUserSession(db, user.Id, c.IP(), string(c.Context().UserAgent()))
|
sessionId, err := createUserSession(db, user.Id, c.IP(), string(c.Context().UserAgent()))
|
||||||
|
|
||||||
|
@ -191,3 +153,43 @@ func NewUser(c *fiber.Ctx) error {
|
||||||
|
|
||||||
return c.SendStatus(fiber.StatusCreated)
|
return c.SendStatus(fiber.StatusCreated)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ActivateUser(c *fiber.Ctx) error {
|
||||||
|
// swagger:operation POST /user/action/{actionType}/{actionId} User activation
|
||||||
|
// ---
|
||||||
|
// summary: Activate user
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: query
|
||||||
|
// description: action id
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// '200':
|
||||||
|
// description: User was activated
|
||||||
|
// '401':
|
||||||
|
// description: action Id is incorrect or expired
|
||||||
|
|
||||||
|
db := database.DB
|
||||||
|
|
||||||
|
deleteExpiredUserActions(db)
|
||||||
|
|
||||||
|
userAction := structs.UserAction{Id: c.Params("actionId")}
|
||||||
|
|
||||||
|
log.Infoln("activate user", c.Params("actionType"), c.Params("actionId"))
|
||||||
|
|
||||||
|
db.Select("user_id").Where("id = ?", c.Params("actionId")).Find(&userAction)
|
||||||
|
|
||||||
|
log.Infoln("usA", userAction)
|
||||||
|
|
||||||
|
if userAction.UserId == "" {
|
||||||
|
log.Info("StatusUnauthorized")
|
||||||
|
return c.SendStatus(fiber.StatusUnauthorized)
|
||||||
|
}
|
||||||
|
|
||||||
|
db.Delete(userAction)
|
||||||
|
|
||||||
|
db.Model(structs.User{Id: userAction.UserId}).Update("state", 0)
|
||||||
|
|
||||||
|
return c.SendStatus(fiber.StatusOK)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue