public async Task <CreatePasswordResponse> Handle(CreatePasswordRequest request, CancellationToken cancellationToken)
        {
            var invitation = await _loginContext.Invitations.SingleOrDefaultAsync(i => i.Id == request.InvitationId, cancellationToken : cancellationToken);

            var newUserResponse = await _userService.CreateUser(
                new LoginUser()
            {
                UserName   = invitation.Email,
                Email      = invitation.Email,
                GivenName  = invitation.GivenName,
                FamilyName = invitation.FamilyName
            }, request.Password);

            if (newUserResponse.Result != IdentityResult.Success)
            {
                return(new CreatePasswordResponse()
                {
                    PasswordValid = false
                });
            }

            await _userService.AddUserClaim(newUserResponse.User, JwtClaimTypes.GivenName, invitation.GivenName);

            await _userService.AddUserClaim(newUserResponse.User, JwtClaimTypes.FamilyName, invitation.FamilyName);

            invitation.IsUserCreated = true;

            _loginContext.UserLogs.Add(new UserLog()
            {
                Id       = GuidGenerator.NewGuid(),
                Action   = "Create password",
                Email    = invitation.Email,
                Result   = "User account created",
                DateTime = SystemTime.UtcNow()
            });

            await _loginContext.SaveChangesAsync(cancellationToken);

            await _callbackService.Callback(invitation, newUserResponse.User.Id);

            return(new CreatePasswordResponse()
            {
                PasswordValid = true
            });
        }
コード例 #2
0
        public void DoSomething(int value)
        {
            ICallbackService callbackService = OperationContext.Current.GetCallbackChannel <ICallbackService>();

            callbackService.Callback(value * 2);
        }