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()); }
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)); }
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()); }
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"); //} }