/// <summary> /// Validace údajů ve formuláři a přihlášení uživatele /// </summary> private bool login() { UserResponse response = app.login(txtLogin.Text, txtPassword.Text); this.user = response.user; this.message = response.message; return response.success; }
/// <summary> /// Privátní konstruktor aplikace, je volán pouze jednou, inicializuje datové modely /// </summary> /// <exception cref="CarExpensesException">Při chybě aplikace</exception> private CarExpensesApp() { user = null; connection = null; userDAO = new UserDAO(getConnection()); carDAO = new CarDAO(getConnection()); gasDAO = new GasDAO(getConnection()); serviceDAO = new ServiceDAO(getConnection()); otherExpenseDAO = new OtherExpenseDAO(getConnection()); }
/// <summary> /// Konstruktor okna /// </summary> /// <param name="carExpensesApp">Instance jádra aplikace</param> /// <param name="user">Aktuálně přihlášený uživatel</param> public ExpensesForm(CarExpensesApp carExpensesApp, User user) { InitializeComponent(); this.carExpensesApp = carExpensesApp; this.user = user; this.selectedCar = null; disableElements(); reloadUserCars(); }
/// <summary> /// Přihlášení uživatele pomocí jména a hesla v parametrech <paramref name="login">login</paramref> /// a <paramref name="password">password</paramref>. Heslo musí být již zahashované, musí být /// obstaráno již business logikou. /// </summary> /// <param name="login">Přihlašovací jméno uživatele.</param> /// <param name="password">Zahashované heslo uživatele</param> /// <returns>Objekt přihlášeného uživatele při úspěchu, null při chybě</returns> /// <exception cref="CarExpensesDatabaseException">Při chybě práce s databází</exception> public User login(string login, string password) { User user = null; using (OracleCommand cmdSelect = new OracleCommand()) { try { cmdSelect.Connection = connection; cmdSelect.CommandText = "SELECT * FROM \"users\" WHERE \"login\" = '" + login + "' AND \"password\" = '" + password + "'"; cmdSelect.CommandType = System.Data.CommandType.Text; using (OracleDataReader dr = cmdSelect.ExecuteReader()) { if (dr.HasRows) { dr.Read(); user = new User(); user.id = Convert.ToInt32(dr["id"].ToString()); user.login = dr["login"].ToString(); user.email = dr["email"].ToString(); user.bornYear = Convert.ToInt32(dr["born_year"].ToString()); user.regionId = Convert.ToInt32(dr["region_id"].ToString()); } else { throw new CarExpensesDatabaseException("Unknown login or password."); } } } catch (OracleException ex) { switch (ex.Number) { case 12545: throw new CarExpensesDatabaseException("The database is unavailable."); default: throw new CarExpensesDatabaseException("Database error: " + ex.Message.ToString()); } } catch (CarExpensesDatabaseException ex) { throw new CarExpensesDatabaseException(ex.Message.ToString()); } catch (Exception ex) // catches any other error { throw new CarExpensesDatabaseException("Unexpected error: " + ex.Message.ToString()); } } return user; }
/// <summary> /// Odhlášení uživatele /// </summary> static bool logout() { Response response = application.logout(); if (response.success == true) { user = null; } Console.WriteLine(response.message); keyToContinue(); return response.success; }
/// <summary> /// Přihlášení uživatele /// </summary> static bool login() { Console.Write("login: "******"password: "); string password = readPassword(); UserResponse response = application.login(login, password); Console.WriteLine(response.message); user = response.user; if (response.success == false) { keyToContinue(); } return response.success; }
/// <summary> /// Registrace nového uživatele. O neduplicitu loginů se stará integrití omezení databáze /// a v případě duplicity je vyvolána výjimka. ID uživatele a časový otisk (timestamp) jsou automaticky /// generovány databází a i když jsou v objektu přiřazeny, jsou při vkládání ignorovány. /// </summary> /// <param name="user">Objekt nového uživatele pro registraci</param> /// <returns>True při úspěchu, false při chybě</returns> /// <exception cref="CarExpensesDatabaseException">Při chybě práce s databází</exception> public bool register(User user) { using (OracleCommand cmdInsert = new OracleCommand()) { try { string sqlInsert = "INSERT INTO \"users\" (\"login\", \"email\", \"password\", \"region_id\", \"born_year\") "; sqlInsert += "values (:p_login, :p_email, :p_password, :p_region_id, :p_born_year)"; cmdInsert.CommandText = sqlInsert; cmdInsert.Connection = connection; OracleParameter pLogin = new OracleParameter(); pLogin.Value = user.login; pLogin.ParameterName = "p_login"; OracleParameter pEmail = new OracleParameter(); pEmail.Value = user.email; pEmail.ParameterName = "p_email"; OracleParameter pPassword = new OracleParameter(); pPassword.Value = user.password; pPassword.ParameterName = "p_password"; OracleParameter pRegionId = new OracleParameter(); pRegionId.OracleDbType = OracleDbType.Decimal; pRegionId.Value = user.regionId; pRegionId.ParameterName = "p_region_id"; OracleParameter pBornYear = new OracleParameter(); pBornYear.OracleDbType = OracleDbType.Decimal; pBornYear.Value = user.bornYear; pBornYear.ParameterName = "p_born_year"; cmdInsert.Parameters.Add(pLogin); cmdInsert.Parameters.Add(pEmail); cmdInsert.Parameters.Add(pPassword); cmdInsert.Parameters.Add(pRegionId); cmdInsert.Parameters.Add(pBornYear); if ( cmdInsert.ExecuteNonQuery() > 0 ) { return true; } else return false; } catch (OracleException ex) { switch (ex.Number) { case 1: throw new CarExpensesDatabaseException("User " + user.login + " already exists."); case 2291: throw new CarExpensesDatabaseException("Region ID " + user.regionId + " doesn't exist."); case 12545: throw new CarExpensesDatabaseException("The database is unavailable."); default: throw new CarExpensesDatabaseException("Database error: " + ex.Message.ToString()); } } catch (CarExpensesDatabaseException ex) { throw new CarExpensesDatabaseException(ex.Message.ToString()); } catch (Exception ex) //catches any other error { throw new CarExpensesDatabaseException("Unexpected error: " + ex.Message.ToString()); } } }
/// <summary> /// Konstruktor struktury /// </summary> public UserResponse(bool success = false, String message = "", User user = null) { this.success = success; this.message = message; this.user = user; }
/// <summary> /// Registrace nového uživatele /// </summary> /// <param name="login">Přihlašovací jméno uživatele</param> /// <param name="password">Heslo uživatele</param> /// <param name="email">Email uživatele</param> /// <param name="bornYear">Rok narození uživatele</param> /// <param name="regionId">Identifikace regionu, kde uživatel žije</param> /// <returns>Objekt <see cref="Response"/>, kde je uložen stav akce a zpráva.</returns> /// <exception cref="CarExpensesException">Při chybě aplikace</exception> public Response register(string login, string password, string email, int bornYear, int regionId) { password = MD5(password); Response response = new Response(false, "Registration failed."); if (bornYear < (DateTime.Today.Year-130) || bornYear > DateTime.Today.Year) { return new Response(false,"Born year must be between " + (DateTime.Today.Year - 130) + " and " + DateTime.Today.Year + "."); } if (CarExpensesApp.validateEmail(email) == false) { return new Response(false, "Email is not in valid format."); } try { User user = new User(); user.login = login; user.password = password; user.email = email; user.bornYear = bornYear; user.regionId = regionId; if (userDAO.register(user) == true) { response.message = "User " + user.login + " was successfuly registered."; response.success = true; } } catch (CarExpensesDatabaseException ex) { response.success = false; response.message = ex.Message.ToString(); } return response; }
/// <summary> /// Odhlášení uživatele /// </summary> /// <returns>Objekt <see cref="Response"/>, kde je uložen stav akce a zpráva.</returns> /// <exception cref="CarExpensesException">Při chybě aplikace</exception> public Response logout() { user = null; return new Response(true, "You were successfuly logged out."); }
/// <summary> /// Přihlášení uživatele /// </summary> /// <param name="login">Přihlašovací jméno uživatele</param> /// <param name="password">Heslo uživatele</param> /// <returns>Objekt <see cref="UserResponse"/>, kde je uložen stav akce, zpráva a objekt přihlášeného uživatele (při chybě null).</returns> /// <exception cref="CarExpensesException">Při chybě aplikace</exception> public UserResponse login(string login, string password) { password = MD5(password); UserResponse response = new UserResponse(false, "You are NOT logged in."); try { user = userDAO.login(login, password); if (user != null) { User responseUser = new User(); responseUser.id = user.id; responseUser.login = user.login; responseUser.region = user.region; responseUser.regionId = user.regionId; response.message = "You were successfuly logged in."; response.success = true; response.user = responseUser; } } catch (CarExpensesDatabaseException ex) { response.success = false; response.message = ex.Message.ToString(); } return response; }