예제 #1
0
        public async Task <ActionResult> Register([FromBody] RegisterBody body)
        {
            string username = body.Username.ToLower();
            string email    = body.Email.ToLower();

            if (await db.Value <int>("SELECT COUNT(*) FROM User WHERE LOWER(username)=@username OR LOWER(email)=@email", new { username, email }) > 0)
            {
                return(Unauthorized("error.unavailable"));
            }

            await db.Execute("INSERT INTO User (username, hash, email) VALUES (@username, @hash, @email)", new { username, hash = crypto.Hash(body.Password), email });

            return(Ok());
        }
예제 #2
0
        public async Task <IActionResult> Register([FromBody] RegisterBody data)
        {
            var existedUser = await _userManager.FindByNameAsync(data.Login);

            if (existedUser != null)
            {
                return(BadRequest("Пользователь с таким логином уже существует"));
            }

            var user = new SiteUser
            {
                Email       = data.Email,
                UserName    = data.Login,
                FirstName   = data.FirstName,
                LastName    = data.LastName,
                Year        = data.Year,
                PhoneNumber = data.PhoneNumber,
                Sex         = data.Sex
            };

            // создаём юзера
            var result = await _userManager.CreateAsync(user, data.Password);

            //добавление роль по дефолту
            await _userManager.AddToRoleAsync(user, RoleNames.User);

            if (!result.Succeeded)
            {
                return(BadRequest("Произошла ошибка во время создания пользователя")); //TODO:
            }

            // если всё ок, то токен создаем и возвращаем
            var token = AuthService.GenerateToken(user);

            var response = new AuthResponse
            {
                AccessToken = token,
                UserName    = data.Login,
                Email       = user.Email,
                UserId      = user.Id,
                Role        = RoleNames.User
            };

            return(Ok(response));
        }
예제 #3
0
        public async Task <IActionResult> RegisterWork([FromBody] RegisterBody data, int rol)
        {
            var existedUser = await _userManager.FindByNameAsync(data.Login);

            if (existedUser != null)
            {
                return(BadRequest("Пользователь с таким логином уже существует"));
            }

            var user = new SiteUser
            {
                Email       = data.Email,
                UserName    = data.Login,
                FirstName   = data.FirstName,
                LastName    = data.LastName,
                Year        = data.Year,
                PhoneNumber = data.PhoneNumber,
                Sex         = data.Sex
            };

            // создаём юзера
            var result = await _userManager.CreateAsync(user, data.Password);

            if (rol == 0)
            {
                await _userManager.AddToRoleAsync(user, RoleNames.Director);
            }
            if (rol == 1)
            {
                await _userManager.AddToRoleAsync(user, RoleNames.Worker);
            }
            if (rol == -1)
            {
                return(BadRequest("Не указана роль регестрируемого пользователя"));
            }
            if (!result.Succeeded)
            {
                return(BadRequest("Произошла ошибка во время создания пользователя"));
            }

            return(Ok());
        }
예제 #4
0
        private async void Button_Clicked(object sender, EventArgs e)
        {
            // если нет подключение к интернету
            if (!CrossConnectivity.Current.IsConnected)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(loginEntry.Text) ||
                string.IsNullOrWhiteSpace(passwordEntry.Text) ||
                string.IsNullOrWhiteSpace(emailEntry.Text) ||
                string.IsNullOrWhiteSpace(firstNameEntry.Text) ||
                string.IsNullOrWhiteSpace(lastNameEntry.Text) ||
                string.IsNullOrWhiteSpace(yearsEntry.Text))
            {
                await DisplayAlert("Ошибка", "Заполнены не все поля", "cancel");

                return;
            }
            if (!IsValidEmail(emailEntry.Text))
            {
                await DisplayAlert("Ошибка", "Не верный Email", "cancel");

                return;
            }
            var body = new RegisterBody
            {
                Login       = loginEntry.Text,
                Password    = passwordEntry.Text,
                Email       = emailEntry.Text,
                FirstName   = firstNameEntry.Text,
                LastName    = lastNameEntry.Text,
                Year        = Convert.ToInt32(yearsEntry.Text),
                PhoneNumber = telefonEntry.Text,
                Sex         = (SexType)picker.SelectedIndex
            };

            if (!body.Email.Contains("@"))
            {
                await DisplayAlert("Ошибка", "Некоректный email", "cancel");

                return;
            }

            if (body.Year < 16 || body.Year > 150)
            {
                await DisplayAlert("Ошибка", "Некоректный возраст", "cancel");

                return;
            }

            if (body.Password.Length <= 6)
            {
                await DisplayAlert("Ошибка", "Длина пароля должна быть больше 6", "cancel");

                return;
            }

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

            if (!response.IsSuccessStatusCode)
            {
                var error = await response.Content.ReadAsStringAsync();
                await DisplayAlert("a", error, "cancel");

                return;
            }

            //сохранение данных пользователя
            var data = JsonConvert.DeserializeObject <AuthResponse>(await response.Content.ReadAsStringAsync());

            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 == "worker")
            //{
            //    await DisplayAlert("a", MySettings.Role, "cancel");
            //}
            //else if (MySettings.Role == "director")
            //{
            //    await DisplayAlert("a", MySettings.Role, "cancel");
            //}
        }