/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2011, Tomasz Sowa * All rights reserved. * */ #include "adduser.h" #include "core/slog.h" namespace Fun { AddUser::AddUser() { fun.url = L"adduser"; } /* checking whether login consists of allowed characters currently all characters above 32 (space) are available 160 - unbreakable space */ bool AddUser::HasLoginCorrectChars(const std::wstring & login) { for(size_t i=0 ; iusers.IsUser(login) ) { log << log3 << "AddUser: such user already exists" << logend; slog << logerror << T("adduser_err_user_exists") << logend; return false; } return true; } bool AddUser::IsPasswordCorrect(const std::wstring & pass, const std::wstring & conf_pass) { if( pass != conf_pass ) { log << log3 << "AddUser: passwords are different" << logend; slog << logerror << T("adduser_err_passwords_different") << logend; return false; } if( pass.size() < config->pass_min_size ) { log << log3 << "AddUser: password is too small" << logend; slog << logerror << T("adduser_err_password_too_small") << " " << config->pass_min_size << " " << T("adduser_err_password_too_small2") << logend; return false; } return true; } void AddUser::MakePost() { user.Clear(); const std::wstring & login = cur->request->PostVar(L"login"); const std::wstring & pass = cur->request->PostVar(L"password"); const std::wstring & conf_pass = cur->request->PostVar(L"passwordconfirm"); if( !IsLoginCorrect(login) || !IsPasswordCorrect(pass, conf_pass) ) return; user.name = login; user.email = cur->request->PostVar(L"email"); up.pass = pass; system->crypt.PassHashCrypt(up); cur->request->status = db->AddUser(user, up.pass, up.pass_encrypted, up.pass_type, up.pass_hash_salted); if( cur->request->status == WINIX_ERR_OK ) { if( system->users.AddUser(user) ) { if( !cur->session->puser ) system->users.LoginUser(user.id, false); log << log2 << "AddUser: added a new user: " << user.name << logend; } else { log << log1 << "AddUser: I can't add to system->users: " << user.name << " but the user was added to the db correctly" << logend; } system->RedirectToLastItem(); } } void AddUser::MakeGet() { } } // namespace