Ejemplo n.º 1
0
        public async Task AddUser(User userToAdd)
        {
            if (userToAdd == null || userToAdd.Username.IsNullOrEmptyExt())
            {
                throw new ArgumentNullException(nameof(userToAdd));
            }

            var exist = (await _context.Users.FirstOrDefaultAsync(a => a.Username == userToAdd.Username).ConfigureAwait(false)) != null;

            if (exist)
            {
                throw new ApplicationException($"Username {userToAdd.Username} already exist.");
            }

            var resp = await _userRoleRepository.CanAssignRoles(userToAdd.UserRoles.Select(a => a.RoleName).ToList()).ConfigureAwait(false);

            if (!resp.Success)
            {
                throw new ApplicationException(resp.Message);
            }

            userToAdd.CreatedAt = DateTime.UtcNow;
            userToAdd.CreatedBy = _apiIdentity.GetUserName();
            _context.Users.Add(userToAdd);
            await _userRoleRepository.AddRolesAndClaims(userToAdd).ConfigureAwait(false);

            await SaveChangesAsync();

            ResetClaimsCache(userToAdd.Username);
        }