func handleLoginResetPassword(loginConfig *loginConfigDef, res http.ResponseWriter, req *http.Request, token string, userName string, password string) { var resetPasswordData resetPasswordDataDef var gkErr *gkerr.GkErrDef resetPasswordData.Title = "resetPassword" resetPasswordData.LoginWebAddressPrefix = loginConfig.LoginWebAddressPrefix resetPasswordData.Token = token resetPasswordData.UserName = userName if !CheckToken(token, userName) { redirectToError("token expired", res, req) return } gklog.LogTrace("reset password: "******"" { gklog.LogTrace("password blank") gkErr = _resetPasswordTemplate.Build(resetPasswordData) if gkErr != nil { gklog.LogGkErr("_resetPasswordTemplate.Build", gkErr) redirectToError("_resetPasswordTemplate.Build", res, req) return } gkErr = _resetPasswordTemplate.Send(res, req) if gkErr != nil { gklog.LogGkErr("_resetPasswordTemplate.send", gkErr) } return } var gkDbCon *database.GkDbConDef gkDbCon, gkErr = database.NewGkDbCon(loginConfig.DatabaseUserName, loginConfig.DatabasePassword, loginConfig.DatabaseHost, loginConfig.DatabasePort, loginConfig.DatabaseDatabase) if gkErr != nil { gklog.LogGkErr("database.NewGkDbCon", gkErr) redirectToError("database.NewGkDbCon", res, req) return } defer gkDbCon.Close() var passwordHash, passwordSalt []byte var err error passwordSalt, err = sec.GenSalt() if err != nil { gkErr = gkerr.GenGkErr("sec.GenSalt", err, ERROR_ID_GEN_SALT) gklog.LogGkErr("sec.GenSalt", gkErr) redirectToError("sec.GenSalt", res, req) } passwordHash = sec.GenPasswordHashSlow([]byte(password), passwordSalt) gklog.LogTrace("change password") gkDbCon.ChangePassword(userName, string(passwordHash), string(passwordSalt)) if gkErr != nil { gklog.LogGkErr("gkDbCon.ChangePassword", gkErr) redirectToError("gbDbCon.ChangePassword", res, req) return } gklog.LogTrace("redirect to login") http.Redirect(res, req, loginConfig.LoginWebAddressPrefix+_loginServer, http.StatusFound) }
func handleLoginRegister(loginConfig *loginConfigDef, res http.ResponseWriter, req *http.Request, userName string, password string, email string) { var registerData registerDataDef var gkErr *gkerr.GkErrDef var err error registerData.Title = "register" registerData.LoginWebAddressPrefix = loginConfig.LoginWebAddressPrefix registerData.UserName = userName registerData.Email = email registerData.ErrorList = make([]string, 0, 0) var gotError bool if !isNewUserNameValid(userName) { registerData.ErrorList = append(registerData.ErrorList, "invalid user name") registerData.UserNameError = genErrorMarker() gotError = true } if !isPasswordValid(password) { registerData.ErrorList = append(registerData.ErrorList, "invalid password") registerData.PasswordError = genErrorMarker() gotError = true } if !isEmailValid(email) { registerData.ErrorList = append(registerData.ErrorList, "invalid email") registerData.EmailError = genErrorMarker() gotError = true } if !gotError { var gkDbCon *database.GkDbConDef gkDbCon, gkErr = database.NewGkDbCon(loginConfig.DatabaseUserName, loginConfig.DatabasePassword, loginConfig.DatabaseHost, loginConfig.DatabasePort, loginConfig.DatabaseDatabase) if gkErr != nil { gklog.LogGkErr("database.NewGkDbCon", gkErr) redirectToError("database.NewGkDbCon", res, req) return } defer gkDbCon.Close() var passwordHash, passwordSalt []byte passwordSalt, err = sec.GenSalt() if err != nil { gkErr = gkerr.GenGkErr("sec.GenSalt", err, ERROR_ID_GEN_SALT) gklog.LogGkErr("sec.GenSalt", gkErr) redirectToError("sec.GenSalt", res, req) } passwordHash = sec.GenPasswordHashSlow([]byte(password), passwordSalt) gkErr = gkDbCon.AddNewUser( registerData.UserName, string(passwordHash), string(passwordSalt), email) if gkErr != nil { if gkErr.GetErrorId() == database.ERROR_ID_UNIQUE_VIOLATION { registerData.ErrorList = append(registerData.ErrorList, "user name already in use") registerData.UserNameError = genErrorMarker() gotError = true } else { gklog.LogGkErr("gbDbCon.AddNewUser", gkErr) redirectToError("gbDbCon.AddNewUser", res, req) return } } } if gotError { gkErr = _registerTemplate.Build(registerData) if gkErr != nil { gklog.LogGkErr("_registerTemplate.Build", gkErr) redirectToError("_registerTemplate.Build", res, req) return } gkErr = _registerTemplate.Send(res, req) if gkErr != nil { gklog.LogGkErr("_registerTemplate.send", gkErr) } } else { http.Redirect(res, req, _loginServer, http.StatusFound) // var gameRedirect string // gameRedirect = getGameRedirect(loginConfig, loginData.UserName) // http.Redirect(res, req, gameRedirect, http.StatusFound) } }