Create handles register
(w http.ResponseWriter, r *http.Request)
| 106 | |
| 107 | // Create handles register |
| 108 | func (u *Users) Create(w http.ResponseWriter, r *http.Request) { |
| 109 | vd := getDataWithReferrer(r) |
| 110 | |
| 111 | var form RegistrationForm |
| 112 | if err := parseForm(r, &form); err != nil { |
| 113 | handleHTMLError(w, r, err, "parsing form", u.NewView, vd) |
| 114 | return |
| 115 | } |
| 116 | |
| 117 | vd.Yield["Email"] = form.Email |
| 118 | |
| 119 | user, err := u.app.CreateUser(form.Email, form.Password, form.PasswordConfirmation) |
| 120 | if err != nil { |
| 121 | handleHTMLError(w, r, err, "creating user", u.NewView, vd) |
| 122 | return |
| 123 | } |
| 124 | |
| 125 | session, err := u.app.SignIn(&user) |
| 126 | if err != nil { |
| 127 | handleHTMLError(w, r, err, "signing in a user", u.LoginView, vd) |
| 128 | return |
| 129 | } |
| 130 | |
| 131 | if err := u.app.SendWelcomeEmail(form.Email); err != nil { |
| 132 | log.ErrorWrap(err, "sending welcome email") |
| 133 | } |
| 134 | |
| 135 | setSessionCookie(w, session.Key, session.ExpiresAt) |
| 136 | |
| 137 | dest := getPathOrReferrer("/", r) |
| 138 | http.Redirect(w, r, dest, http.StatusFound) |
| 139 | } |
| 140 | |
| 141 | // LoginForm is the form data for log in |
| 142 | type LoginForm struct { |