Пример #1
0
        public async Task <IdentityResult> AddClaimAsync(int id, Claim claim, IList <Claim> existingClaims)
        {
            var role = await GetByIdAsync(id);

            var claims = await GetClaimsAsync(role.Name);

            ClaimChecker.CheckClaimStatus(claim, claims, existingClaims);

            return(await _roleManager.AddClaimAsync(role, claim));
        }
Пример #2
0
        public async Task <IdentityResult> AddClaimAsync(int id, Claim claim, IList <Claim> existingClaims)
        {
            var user = await GetByIdAsync(id);

            var claims = await GetUserClaimsAsync(user.Id);

            ClaimChecker.CheckClaimStatus(claim, claims, existingClaims);

            return(await _userManager.AddClaimAsync(user, claim));
        }
Пример #3
0
        public async Task <IList <Claim> > AddClaimsAsync(int id, IList <Claim> claims, IList <Claim> existingClaims)
        {
            var addedClaims = new List <Claim>();
            var role        = await GetByIdAsync(id);

            var claimsInRole = await GetClaimsAsync(role.Name);

            foreach (var claim in claims)
            {
                Claim checkedClaim;
                bool  claimCheckSuccess = false;
                try
                {
                    //CheckClaimStaus metodu hata oluştuğunda Exception fırlatıyor.
                    //Fakat bu metotta claim değerleri bir dizi halinde olduğu için
                    //Başarısız işlemlerde hata üretilmesini değil, diziye eklenmemesini istiyoruz
                    //Bu yüzden boş bir try catch bloğu içerisine alındı
                    checkedClaim      = ClaimChecker.CheckClaimStatus(claim, claimsInRole, existingClaims);
                    claimCheckSuccess = true;
                }
                catch (KeyNotFoundException)
                {
                    throw new KeyNotFoundException(nameof(Claim));
                }
                catch { }

                if (claimCheckSuccess)
                {
                    await _roleManager.AddClaimAsync(role, claim);

                    addedClaims.Add(claim);
                }
            }

            return(addedClaims);
        }