예제 #1
0
        public async Task <IActionResult> Login(LoginModel model)
        {
            Current_user = "";
            if (ModelState.IsValid)
            {
                var user = new User()
                {
                    Login    = model.Login,
                    Password = model.Password
                };
                //после проверки логина и пароля -формируем строку для подключения к бд
                _connectionString.SetConnectionString(user);
                //пытаемся авторизироваться при помощи введенных логина и пароля
                try
                {
                    var connString = _connectionString.GetConnectionString();

                    using (var conn = new NpgsqlConnection(connString))
                    {
                        conn.Open();
                        using (var cmd = new NpgsqlCommand())
                        {
                            cmd.Connection = conn;
                        }

                        conn.Close();
                    }

                    await Authenticate(model.Login);                     // авторизация
                }
                catch (Exception ex)
                {
                    //в случае ошибки авторизации
                    ModelState.AddModelError("", "Некорректные логин и(или) пароль");
                    _logger.LogFatal(ex, "Некорректные логин и(или) пароль");
                    return(Content("Некорректные логин и(или) пароль"));
                }

                Current_user = model.Login;
                //даем пользователю права на работу с бд
                Give_Permission();
                _logger.LogInfo($"User {Current_user} logged in");
                return(RedirectToAction("Send", "File"));
            }
            return(View(model));
        }