Example #1
0
        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());
                }
            }
        }
Example #2
0
        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());
                }
            }
        }
Example #3
0
        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;
            }
        }