public static void AddToConfirmList(AccountModel accountModel)
 {
     var toConfirm = ToConfirmDataMapper.GetAccountDataMapper();
     accountModel.ConfirmationCode = GenerateConfirmationCode(accountModel.Email.Substring(0, accountModel.Email.IndexOf('@')));
     accountModel.Confirmed = false;
     toConfirm.Add(accountModel);
 }
 public static void EncryptPassword(AccountModel accountModel)
 {
     var salt = CreateSalt(SALT_SIZE);
     var passwordHash = CreatePasswordHash(accountModel.Password, salt);
     accountModel.Salt = salt;
     accountModel.Password = passwordHash;
 }
 public static void SendConfirmationMail(AccountModel accountModel, String baseUrl)
 {
     MailMessage m = new MailMessage();
     m.From = new MailAddress(EMAIL);
     m.To.Add(accountModel.Email);
     m.Subject = CONF_SUBJECT;
     m.Body = baseUrl + CONF_URI + accountModel.ConfirmationCode;
     System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
     smtp.UseDefaultCredentials = false;
     smtp.Credentials = new NetworkCredential(EMAIL, EMAIL_PW);
     smtp.EnableSsl = true;
     smtp.Port = 587;
     smtp.Send(m);
 }
 public static AccountModel RegisterAccount(RegisterAccountModel registerAccountModel)
 {
     var adm = AccountDataMapper.GetAccountDataMapper();
     if (adm.GetById(registerAccountModel.Username.ToLower()) == null)
     {
         AccountModel accountModel = new AccountModel();
         accountModel.Username = registerAccountModel.Username.ToLower();
         accountModel.Password = registerAccountModel.Password;
         accountModel.Email = registerAccountModel.Email;
         EncryptPassword(accountModel);
         accountModel.Roles = new List<string>() { "User" };
         adm.Add(accountModel);
         AddToConfirmList(accountModel);
         return accountModel;
     }
     return null;
 }
 public static bool ComparePasswords(string inserted, AccountModel accountModel)
 {
     String s = CreatePasswordHash(inserted, accountModel.Salt);
     return s.Equals(accountModel.Password);
 }
 public ActionResult Index(AccountModel accountModel)
 {
     return View(accountModel);
 }
 public ActionResult ShowInfo(AccountModel accountModel)
 {
     return View(accountModel);
 }
 public ActionResult Settings(AccountModel accountModel)
 {
     return View(accountModel);
 }
 public ActionResult LogOn(AccountModel accountModel)
 {
     var adm = AccountDataMapper.GetAccountDataMapper();
     var user = adm.GetById(accountModel.Username.ToLower());
     if (user != null){
         if (!user.Confirmed)
             ModelState.AddModelError("Username", "O username inserido ainda não foi confirmado. Por favor confirme através do seu email.");
         else if (LoginUtils.ComparePasswords(accountModel.Password, user))
         {
             FormsAuthentication.SetAuthCookie(user.Username, false);
             return RedirectToAction("Index", "Home", user);
         }
         /* Login Failed */
         else
             ModelState.AddModelError("Password", "A password inserida não é valida");
     }
     else/*User not found. Please register*/
         ModelState.AddModelError("Username", "O username inserido não corresponde a nenhum utilizador registado.");
     return View(accountModel);
 }