public async Task ReplaceClaimAsync(TApplication application, Claim oldClaim, Claim newClaim, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); if (application == null) { throw new ArgumentNullException(nameof(application)); } if (oldClaim == null) { throw new ArgumentNullException(nameof(oldClaim)); } if (newClaim == null) { throw new ArgumentNullException(nameof(newClaim)); } var matchedClaims = await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id) && ac.ClaimValue == oldClaim.Value && ac.ClaimType == oldClaim.Type).ToListAsync(cancellationToken); foreach (var matchedClaim in matchedClaims) { matchedClaim.ClaimValue = newClaim.Value; matchedClaim.ClaimType = newClaim.Type; } }
public async Task AddClaim(ApplicationUser user, ApplicationClaims appClaim) { var claimName = Enum.GetName(typeof(ApplicationClaims), appClaim); var result = await userManager.AddClaimAsync(user, new Claim(ClaimTypes.AuthorizationDecision, claimName)); if (result.Succeeded) { logger.LogInformation($"Claim {claimName} added to User {user.UserName} successfully."); } }
public async Task <IList <Claim> > GetClaimsAsync(TApplication application, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); if (application == null) { throw new ArgumentNullException(nameof(application)); } return(await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id)).Select(c => c.ToClaim()).ToListAsync(cancellationToken)); }
public Task AddClaimsAsync(TApplication application, IEnumerable <Claim> claims, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); if (application == null) { throw new ArgumentNullException(nameof(application)); } if (claims == null) { throw new ArgumentNullException(nameof(claims)); } foreach (var claim in claims) { ApplicationClaims.Add(CreateApplicationClaim(application, claim)); } return(Task.CompletedTask); }
public async Task RemoveClaimsAsync(TApplication application, IEnumerable <Claim> claims, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); if (application == null) { throw new ArgumentNullException(nameof(application)); } if (claims == null) { throw new ArgumentNullException(nameof(claims)); } foreach (var claim in claims) { var matchedClaims = await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id) && ac.ClaimValue == claim.Value && ac.ClaimType == claim.Type).ToListAsync(cancellationToken); foreach (var c in matchedClaims) { ApplicationClaims.Remove(c); } } }
public User GetUser(Guid userId) { try { var user = new User(); user.UserId = userId; var activeDirectoryAccessorFactory = new ActiveDirectoryAccessors.AccessorFactory(); IGraphAccessor graphAccessor = activeDirectoryAccessorFactory.CreateAccessor <IGraphAccessor>(); var userInformation = graphAccessor.GetUserById(userId.ToString()); user.DisplayName = userInformation.DisplayName; user.EmailAddress = userInformation.EmailAddress; user.FirstName = userInformation.FirstName; user.LastName = userInformation.LastName; //Enigne that takes a user and spits out claims var databaseAccessorFactory = new DatabaseAccessors.AccessorFactory(); IApplicationsAccessor applicationAccessor = databaseAccessorFactory.CreateAccessor <IApplicationsAccessor>(); IClaimsAccessor claimsAccessor = databaseAccessorFactory.CreateAccessor <IClaimsAccessor>(); IUserClaimsAccessor userClaimsAccessor = databaseAccessorFactory.CreateAccessor <IUserClaimsAccessor>(); IMembershipsAccessor membershipsAccessor = databaseAccessorFactory.CreateAccessor <IMembershipsAccessor>(); var userClaims = userClaimsAccessor.FindAllUserClaims(user.UserId); var userApplications = membershipsAccessor.FindAllUserApplications(user.UserId); var applicationClaims = new List <ApplicationClaims>(); foreach (var userApplication in userApplications) { var application = applicationAccessor.Find(userApplication.ApplicationId); var applicationClaim = new ApplicationClaims { ApplicationName = application.Name, Claims = new ClaimData[0] }; applicationClaims.Add(applicationClaim); } foreach (var userClaim in userClaims) { var userClaimData = claimsAccessor.Find(userClaim.ClaimId); var application = applicationAccessor.Find(userClaimData.ApplicationId); var applicationClaim = applicationClaims.Where(app => app.ApplicationName == application.Name).FirstOrDefault(); var claimData = new ClaimData { ClaimType = userClaimData.ClaimType, ClaimValue = userClaimData.ClaimValue }; var claimDataList = applicationClaim.Claims.ToList(); claimDataList.Add(claimData); applicationClaim.Claims = claimDataList.ToArray(); } user.Applications = applicationClaims.ToArray(); return(user); } catch (Exception ex) { Logger.LogError("Error in GetUser", ex); return(null); } }