Exemplo n.º 1
0
        public IActionResult AuthenticateUser([FromBody] AuthBody authBody)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_context.User.Any(u => authBody.mailAddress.Equals(u.mailAddress)))
            {
                return(NotFound());
            }

            var user = _context.User.First(u => u.mailAddress.Equals(authBody.mailAddress));

            if (BCrypt.Net.BCrypt.Verify(authBody.password, user.password))
            {
                var response = new AuthResponseBody()
                {
                    id          = user.id,
                    mailAddress = user.mailAddress,
                    team        = user.team,
                    username    = user.username
                };
                return(Ok(response));
            }
            else
            {
                return(BadRequest(new BasicResponse {
                    message = "Wrong password"
                }));
            }
        }
Exemplo n.º 2
0
        /*AuthenticationContext Context;
         *
         * protected async Task<string> GetToken()
         * {
         *  // The AquireTokenAsync call will prompt with a UI if necessary
         *  // Or otherwise silently use a refresh token to return
         *  // a valid access token
         *  var authenticationResult = await Context.AcquireTokenAsync(Config.ActiveDirectoryBaseUrl,
         *                                                             Config.MediaServicesClientId,
         *                                                             new Uri("http://viime.com"),
         *                                                             new PlatformParameters());
         *
         *  return authenticationResult.AccessToken;
         * }*/

        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <returns>The token.</returns>
        //protected async Task<string> GetToken()
        protected async Task GetToken()
        {
            var url = string.Format("{0}{1}", Config.ActiveDirectoryBaseUrl, Config.ActiveDirectoryTenantId);

            _activeDirectoryApi = RestService.For <IActiveDirectoryApi>(url, new RefitSettings
            {
                JsonSerializerSettings = new JsonSerializerSettings
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                }
            });

            var auth = new AuthBody()
            {
                GrantType    = "client_credentials",
                ClientId     = Config.MediaServicesClientId,
                ClientSecret = Config.MediaServicesClientSecret,
                Resource     = Config.MediaServicesResourceUrl
            };

            var result = await _activeDirectoryApi.GetToken(auth);

            var settings = new SettingsStorable()
            {
                BearerToken = result.AccessToken
            };
            await Storage.InsertObject(settings);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Login([FromBody] AuthBody data)
        {
            //входим по логину и паролю БЕЗ блокировки пользователя при вводе неправильных данных
            var auth = await _signInManager.PasswordSignInAsync(data.Login, data.Password,
                                                                true, false);

            // а если не ок, то досвиданья
            if (!auth.Succeeded)
            {
                return(BadRequest("Неправильный логин или пароль"));
            }

            // если всё ок
            // ищем сущность этого пользователя
            var user = await _userManager.FindByNameAsync(data.Login);

            var token = AuthService.GenerateToken(user);        // создаём токен
            var role  = await _userManager.GetRolesAsync(user); // узнаем роль пользователя

            // возвращаем инфу
            var response = new AuthResponse
            {
                AccessToken = token,
                UserName    = data.Login,
                Email       = user.Email,
                UserId      = user.Id,
                Role        = role.First()
            };

            return(Ok(response));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Method for authorization in to the system
        /// </summary>
        /// <param name="login">Ecampus User name </param>
        /// <param name="password">Ecampus passsword</param>
        /// <returns></returns>
        public async Task <Login> LoginAsync(string login, string password)
        {
            if (authUser == null && string.IsNullOrWhiteSpace(login) && string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentException();
            }
            var loginPage = await client.GetAsync(Links.BaseLink + Links.LoginLink);

            if (!loginPage.IsSuccessStatusCode)
            {
                throw new Exception("Server Error");
            }

            // html code for auth
            var loginContent = await loginPage.Content.ReadAsStringAsync();

            var token       = GetVerificationToken(loginContent);
            var authRequest = new AuthBody()
            {
                Login      = login,
                Password   = password,
                Token      = token,
                RememberMe = true
            };
            var requestBody = new StringContent($"__RequestVerificationToken={authRequest.Token}" +
                                                $"&Login={authRequest.Login}&Password={authRequest.Password}&RememberMe={authRequest.RememberMe}", Encoding.UTF8, "application/x-www-form-urlencoded");

            var loginResponse = await client.PostAsync(string.Concat(Links.BaseLink, Links.LoginLink), requestBody);

            if (!loginResponse.IsSuccessStatusCode)
            {
                return(new Login {
                    IsSuccess = false, ReasonFail = Reason.ErrorServer
                });
            }
            var resultContent = await loginResponse.Content.ReadAsStringAsync();

            var success = resultContent.Contains("<span class=\"username\">");

            if (success == false)
            {
                var checkOnPassLogin = resultContent.Contains("validation-summary-errors alert alert-danger alert-block");
                if (checkOnPassLogin)
                {
                    return(new Login {
                        IsSuccess = false, ReasonFail = Reason.Pasword
                    });
                }
                else
                {
                    return(new Login {
                        IsSuccess = false, ReasonFail = Reason.OtherProblem
                    });
                }
            }
            return(new Login {
                IsSuccess = true, ReasonFail = Reason.None
            });
        }
Exemplo n.º 5
0
        private async void Button_Clicked(object sender, EventArgs e)
        {
            // если нет подключение к интернету
            if (!CrossConnectivity.Current.IsConnected)
            {
                return;
            }

            var login    = loginEntry.Text;
            var password = passwordEntry.Text;
            var body     = new AuthBody
            {
                Login    = loginEntry.Text,
                Password = passwordEntry.Text
            };

            if (string.IsNullOrWhiteSpace(login) || string.IsNullOrWhiteSpace(password))
            {
                await DisplayAlert("Внимание", "Заполнены не все поля", "ОК");

                return;
            }

            var response = await RequestBuilder.Create()
                           .AppendPathSegments("api", "account", "login") // добавляет к ендпоинт
                           .PostJsonAsync(body);                          //  https://localhost:5001/api/account/login?login=1&password=1234567

            var result = await response.Content.ReadAsStringAsync();

            if (!response.IsSuccessStatusCode)
            {
                await DisplayAlert("ошибка", result, "cancel");

                return;
            }

            var data = JsonConvert.DeserializeObject <AuthResponse>(result);

            MySettings.Token    = data.AccessToken;
            MySettings.UserName = data.UserName;
            MySettings.Email    = data.Email;
            MySettings.UserId   = data.UserId;
            MySettings.Role     = data.Role;

            if (MySettings.Role == RoleNames.User)
            {
                await Navigation.PushAsync(new MasterDetailPage1());
            }
            else if (MySettings.Role == RoleNames.Worker)
            {
                await Navigation.PushAsync(new MasterDetailPage1());
            }
            else if (MySettings.Role == RoleNames.Director)
            {
                await Navigation.PushAsync(new MasterDetailPage1());
            }
        }
Exemplo n.º 6
0
        public async Task <ActionResult <UserViewModel> > Authenticate([FromBody] AuthBody authBody)
        {
            try
            {
                var result = await AuthService.Authenticate(authBody.Id);

                return(Ok(result));
            }
            catch (Exception e)
            {
                Logger.LogInformation("Authenticate error {Exception}", e);
                return(Unauthorized(e.Message));
            }
        }