func (web *MailWeb) authenticate(session sessions.Session, postedUser auth.WatneyUser, r render.Render, req *http.Request) { // 1) Create a new IMAP mail server connection if imapCon, err := mail.NewMailCon(web.mconf); nil != err { fmt.Printf("Couldn't establish connection to imap mail server: %s\n", err.Error()) r.HTML(200, "start", map[string]interface{}{ "FailedLogin": true, "OrigError": err.Error(), }) } else { if _, err := imapCon.Authenticate(postedUser.Username, postedUser.Password); err == nil { var user auth.WatneyUser = auth.WatneyUser{ Username: postedUser.Username, SMTPAuth: smtp.PlainAuth("", postedUser.Username, postedUser.Password, web.mconf.SMTPAddress), ImapCon: imapCon, } h := fnv.New32a() h.Write([]byte(postedUser.Username)) user.Id = int64(h.Sum32()) if err := sessionauth.AuthenticateSession(session, &user); err != nil { r.HTML(200, "start", map[string]interface{}{ "FailedLogin": true, "OrigError": err.Error(), }) } r.Redirect("/main") } else { fmt.Println("FAILED!") imapCon.Close() r.HTML(200, "start", map[string]interface{}{ "FailedLogin": true, "OrigError": err.Error(), }) } } }