Пример #1
0
        public ActionResult Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                // поиск пользователя в бд
                WEBUSER user = null;
                using (DbModel db = new DbModel())
                {
                    user = db.WEBUSERS.FirstOrDefault(u => u.EMAIL == model.Name && u.PASSWD == model.Password);
                }
                // если нашли пользователя с введённым логином и паролем, то
                // запоминаем его и делаем переадресацию на стартовую страницу
                if (user != null)
                {
                    FormsAuthentication.SetAuthCookie(model.Name, true);
                    return(RedirectToAction("Index", "Invoice"));
                }
                else
                {
                    ModelState.AddModelError("", "Пользователя с таким логином и паролем не существует");
                }
            }

            return(View(model));
        }
Пример #2
0
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                WEBUSER user = null;
                using (DbModel db = new DbModel())
                {
                    user = db.WEBUSERS.FirstOrDefault(u => u.EMAIL == model.Name);
                }
                if (user == null)
                {
                    // создаем нового пользователя
                    using (DbModel db = new DbModel())
                    {
                        // получаем новый идентификатор с помощью генератора
                        int userId = db.NextValueFor("SEQ_WEBUSER");
                        db.WEBUSERS.Add(new WEBUSER {
                            WEBUSER_ID = userId,
                            EMAIL      = model.Name,
                            PASSWD     = model.Password
                        });
                        db.SaveChanges();

                        user = db.WEBUSERS.Where(u => u.WEBUSER_ID == userId).FirstOrDefault();

                        // находим роль manager
                        // Эта роль будет ролью по умолчанию, т.е.
                        // будет выдана автоматически при регистрации
                        var defaultRole = db.WEBROLES.Where(r => r.NAME == "manager").FirstOrDefault();

                        // назначаем вновь добавленному пользователяю роль по умолчанию
                        if (user != null && defaultRole != null)
                        {
                            db.WEBUSERINROLES.Add(new WEBUSERINROLE
                            {
                                WEBUSER_ID = user.WEBUSER_ID,
                                WEBROLE_ID = defaultRole.WEBROLE_ID
                            });
                            db.SaveChanges();
                        }
                    }
                    // если пользователь удачно добавлен в бд
                    if (user != null)
                    {
                        FormsAuthentication.SetAuthCookie(model.Name, true);
                        return(RedirectToAction("Login", "Account"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Пользователь с таким логином уже существует");
                }
            }

            return(View(model));
        }
 /// <summary>
 /// Возвращает список имён ролей у пользователя
 /// </summary>
 /// <param name="username">Имя пользователя</param>
 /// <returns></returns>
 public override string[] GetRolesForUser(string username)
 {
     string[] roles = new string[] { };
     using (DbModel db = new DbModel())
     {
         // Получаем пользователя
         WEBUSER user = db.WEBUSERS.FirstOrDefault(u => u.EMAIL == username);
         if (user != null)
         {
             // заполняем массив доступных ролй
             int i = 0;
             roles = new string[user.WEBUSERINROLES.Count];
             foreach (var rolesInUser in user.WEBUSERINROLES)
             {
                 roles[i] = rolesInUser.WEBROLE.NAME;
                 i++;
             }
         }
     }
     return(roles);
 }