Beispiel #1
0
        public async Task <Delegation> Create(CreateOrUpdateDelegationRequest request)
        {
            var policyJson    = new DelegationPolicyJsonParser(request.Policy);
            var policyIssuer  = policyJson.PolicyIssuer;
            var accessSubject = policyJson.AccessSubject;

            var createdBy = _db.Users.First(u => u.AspNetUserId == request.UserId);

            var delegation = new Delegation()
            {
                AuthorizationRegistryId = await GenerateArId().ConfigureAwait(false),
                PolicyIssuer            = policyIssuer,
                AccessSubject           = accessSubject,
                Policy            = request.Policy,
                CreatedBy         = createdBy,
                UpdatedBy         = createdBy,
                CreatedDate       = DateTime.Now,
                UpdatedDate       = DateTime.Now,
                DelegationHistory = new List <DelegationHistory>()
            };
            await _db.Delegations.AddAsync(delegation).ConfigureAwait(false);

            await _db.SaveChangesAsync().ConfigureAwait(false);

            return(delegation);
        }
Beispiel #2
0
        public async Task <UserModelResult> ActivateAccountConfirm(ActivateAccountRequest request)
        {
            var user = await _db.Users.FirstOrDefaultAsync(x => x.Id == request.Id);

            if (user == null)
            {
                return(new UserModelResult("Invalid request"));
            }

            if (user.Active)
            {
                return(new UserModelResult("Account already activated"));
            }

            var aspNetUser = await _userManager.FindByIdAsync(user.AspNetUserId);

            var tokenResult = await _userManager.ConfirmEmailAsync(aspNetUser, request.Token);

            if (!tokenResult.Succeeded)
            {
                return(Convert(tokenResult));
            }
            ////TODO: check if explicit password validation is actually required
            //var passwordValidationResult = await GetPasswordErrros(aspNetUser, request.Password);
            //if (!passwordValidationResult.Success)
            //{
            //    return passwordValidationResult;
            //}


            var passwordResult = await _userManager.AddPasswordAsync(aspNetUser, request.Password);

            if (!passwordResult.Succeeded)
            {
                _logger.LogWarning("account activation failed: {0}", passwordResult.Errors);
            }
            else
            {
                user.Active = true;
                await _db.SaveChangesAsync();
            }

            return(Convert(passwordResult));
        }