public async Task <IActionResult> GetUsers() { UsersModel usersModel = new UsersModel(); try { _logger.LogInfo("UserController-GetUsers: [Started] for getting users detail from Azure AD B2C"); var client = GraphClientUtility.GetGraphServiceClient(); if (client == null) { _logger.LogError("UserController-GetUsers:Unable to create object for graph client "); return(NotFound()); } //Filter based on group //Care stream its group //Each application group var userList = await client.Users.Request().GetAsync(); if (userList != null) { _logger.LogInfo($"UserController-GetUsers: Found {userList.Count} users from Azure AD B2C"); foreach (var user in userList) { UserModel userModel = GraphClientUtility.ConvertGraphUserToUserModel(user, _logger); usersModel.Users.Add(userModel); } } _logger.LogInfo($"UserController-GetUsers: Completed getting users detail from Azure AD B2C"); return(Ok(usersModel)); } catch (ServiceException ex) { _logger.LogError("UserController-GetUsers: Exception occured...."); _logger.LogError(ex); if (ex.StatusCode == HttpStatusCode.BadRequest) { return(BadRequest()); } else { return(NotFound()); } } }
public async Task <IActionResult> GetUser(string id) { try { var userModel = new UserModel(); if (string.IsNullOrEmpty(id) || string.IsNullOrWhiteSpace(id)) { _logger.LogError("UserController-GetUser: Id cannot be empty"); return(BadRequest()); } _logger.LogInfo($"UserController-GetUser: [Started] to get detail for users id {id} from Azure AD B2C"); var client = GraphClientUtility.GetGraphServiceClient(); if (client == null) { _logger.LogError("UserController-GetUser: Unable to create object for graph client"); return(NotFound()); } var user = await client.Users[id].Request().GetAsync(); if (user != null) { _logger.LogInfo($"UserController-GetUser: Fetched the user detail for id {id} from Azure AD B2C"); userModel = GraphClientUtility.ConvertGraphUserToUserModel(user, _logger); } _logger.LogInfo($"UserController-GetUser: [Completed] to get detail for users id {id} from Azure AD B2C"); return(Ok(userModel)); } catch (ServiceException ex) { _logger.LogError("UserController-GetUser: Exception occured...."); _logger.LogError(ex); if (ex.StatusCode == HttpStatusCode.BadRequest) { return(BadRequest()); } else { return(NotFound()); } } }
public async Task <IActionResult> Post([FromBody] UserModel user) { try { //Check Null condition and add logging _logger.LogInfo("UserController-Post: [Started] creation of user in Azure AD B2C"); if (user == null) { _logger.LogError("UserController-Post: User Model cannot be null..."); return(NotFound()); } var userService = new UserService(_logger); if (!userService.IsUserModelValid(user)) { _logger.LogError("UserController-GetGroups: User Name and Name is required for creating user on Azure AD B2C"); return(NotFound()); } GraphServiceClient client = GraphClientUtility.GetGraphServiceClient(); if (client == null) { _logger.LogError("UserController-GetGroups: Unable to create object for graph client "); return(NotFound()); } var tenantId = GraphClientUtility.TenantId; var b2cExtensionAppClientId = GraphClientUtility.b2cExtensionAppClientId; var newUser = userService.BuildUserForCreation(user, tenantId, b2cExtensionAppClientId); var result = await client.Users.Request().AddAsync(newUser); if (result != null) { newUser.Id = result.Id; _logger.LogInfo($"UserController-Post: Created user with id {newUser.Id} on Azure AD B2C"); #region Assign group(s) if (user.Groups != null) { if (user.Groups.Any()) { _logger.LogInfo($"UserController-Post: Assiging group(s) to user with id {newUser.Id} on Azure AD B2C"); userService.AssignGroupsToUser(client, result, user.Groups); } } #endregion } var newUserModel = GraphClientUtility.ConvertGraphUserToUserModel(result, _logger); _logger.LogInfo("UserController-Post: [Completed] creation of user in Azure AD B2C"); return(Ok(newUserModel)); } catch (Exception ex) { _logger.LogError("UserController-Post: Exception occured...."); _logger.LogError(ex); throw ex; } }