예제 #1
0
        public async Task <IActionResult> Me(CancellationToken cancellationToken)
        {
            var emailClaim = HttpContext.User.GetEmail();
            var nameClaim  = HttpContext.User.GetName();
            var phoneClaim = HttpContext.User.GetMobilePhone();


            if (string.IsNullOrEmpty(emailClaim))
            {
                return(BadRequest("No email provided."));
            }

            var user = new Domain.ApplicationUser();

            try
            {
                user = await _userRetrievalService.GetUserByEmailAsync(emailClaim, null, cancellationToken);
            }
            catch (Services.Exceptions.NotFoundException)
            {
                user = await _userManagementService.CreateNewUserAsync(
                    nameClaim,
                    emailClaim,
                    phoneClaim
                    );
            }

            return(Ok(new UserDto(user)));
        }
예제 #2
0
        public async Task <(bool, string)> CreateAdmin(Domain.ApplicationUser user, string url)
        {
            var success = true;
            var msg     = string.Empty;

            using (TransactionScope tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                //  Create Domain in DB.
                var newUser = await accesscontrol.CreateUser(user, url, new[] { Core.LogicConstants.Roles.Administrator });

                var admin = new Domain.Admin
                {
                    ApplicationUser = newUser,
                    Id = newUser.Id
                };
                adminParticipantRepo.Insert(admin);

                await adminParticipantRepo.SaveAsync();

                //  Create Blockchain data.
                (success, msg) = await bcAdminParticipants.Create(AdminDomainToApiModel(admin));

                if (success)
                {
                    tx.Complete();
                }
            }
            return(success, msg);
        }
예제 #3
0
        public async Task <(bool, string)> UpdateAdmin(Domain.ApplicationUser admin)
        {
            var success = true;
            var msg     = string.Empty;

            using (TransactionScope tx = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                //  Update Domain in DB.
                var user = await accesscontrol.UpdateUser(admin, new[] { Core.LogicConstants.Roles.Administrator });

                //  Create Blockchain data.
                (success, msg) = await bcAdminParticipants.Update(AdminDomainToApiModel(user.Admin));

                if (success)
                {
                    tx.Complete();
                }
            }
            return(success, msg);
        }
 public void Initialize(Domain.ApplicationUser principal)
 {
     _principal = principal;
 }