public async Task <SignUpResultDto> SignUp(UserEssential user) { try { var existing = _unitOfWork.Users.Count(t => t.Email == user.Email); if (existing != 0) { throw new ArgumentException("User already exists"); } var signUpResult = await _authZeroProvider.SignUp(user); if (signUpResult == null) { throw new ArgumentException("Auth0 signup process failed"); } var newUser = new User { Email = user.Email, Guid = Guid.NewGuid(), Registered = DateTimeOffset.UtcNow, LastActivity = DateTimeOffset.UtcNow, Auth0Id = signUpResult.Id, Role = Role.User }; _unitOfWork.Users.Insert(newUser); await _unitOfWork.SaveAsync(); var loginResult = await _authZeroProvider.GetToken(user); if (loginResult == null) { throw new ArgumentException("Auth0 login process failed"); } _activityService.LogActivity(new Activity { UserId = newUser.Id, Importance = ActivityImportance.Critical, Type = ActivityType.SignUp, Data = JsonConvert.SerializeObject(newUser) }); return(new SignUpResultDto { Id = newUser.Id, ExpiresIn = loginResult.ExpiresIn, Token = loginResult.AccessToken, RefreshToken = loginResult.RefreshToken }); } catch (ArgumentException) { throw; } catch (Exception ex) { _logger.LogError(ex.Message); throw; } }
public async Task <IActionResult> Login([FromBody] UserEssential user) { try { return(Ok(await _accountService.Login(user))); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task <SignUpResponse> SignUp(UserEssential user) { using (var client = CreateClient()) { dynamic parameter = new ExpandoObject(); parameter.client_id = _settings.ClientId; parameter.email = user.Email; parameter.password = user.Password; parameter.connection = "Username-Password-Authentication"; dynamic metadata = new ExpandoObject(); metadata.role = "user"; parameter.user_metadata = metadata; var requestBody = JsonConvert.SerializeObject(parameter); var content = new StringContent(requestBody, Encoding.UTF8, "application/json"); var result = await client.PostAsync("/dbconnections/signup", content); var resultContent = await result.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <SignUpResponse>(resultContent)); } }
public async Task <LoginResponse> GetToken(UserEssential user) { using (var client = CreateClient()) { dynamic parameter = new ExpandoObject(); parameter.grant_type = "password"; parameter.username = user.Email; parameter.password = user.Password; parameter.audience = _settings.Audience; parameter.client_id = _settings.ClientId; parameter.client_secret = _settings.ClientSecret; parameter.scope = "offline_access"; parameter.connection = "Username-Password-Authentication"; var requestBody = JsonConvert.SerializeObject(parameter); var content = new StringContent(requestBody, Encoding.UTF8, "application/json"); var result = await client.PostAsync("/oauth/token", content); var resultContent = await result.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <LoginResponse>(resultContent)); } }
public async Task <LoginResultDto> Login(UserEssential user) { try { var existing = _unitOfWork.Users.Get(t => t.Email == user.Email).FirstOrDefault(); if (existing == null) { throw new ArgumentException("User doesn't exists"); } var loginResult = await _authZeroProvider.GetToken(user); if (loginResult == null) { throw new ArgumentException("Auth0 login process failed"); } _activityService.LogActivity(new Activity { UserId = existing.Id, Importance = ActivityImportance.Medium, Type = ActivityType.SignUp }); return(new LoginResultDto { ExpiresIn = loginResult.ExpiresIn, Token = loginResult.AccessToken, RefreshToken = loginResult.RefreshToken, Avatar = existing.Avatar }); } catch (ArgumentException) { throw; } catch (Exception ex) { _logger.LogError(ex.Message); throw; } }