/// <summary>
            /// LogOff the user.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static NullResponse LogOffUser(UserLogOffRealtimeRequest request)
            {
                UserAuthenticationTransactionServiceDemoMode.ThrowIfInvalidLogonConfiguration(request.LogOnConfiguration);

                ICommercePrincipal principal = request.RequestContext.GetPrincipal();

                if (string.IsNullOrEmpty(principal.UserId))
                {
                    throw new UserAuthenticationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_AuthenticationFailed, "User is not authenticated.");
                }

                string staffId = principal.UserId;

                if (!principal.IsTerminalAgnostic)
                {
                    string terminalId = request.RequestContext.GetTerminal().TerminalId;
                    UnlockUserAtLogOffDataRequest unlockUserDataRequest = new UnlockUserAtLogOffDataRequest(
                        principal.ChannelId,
                        terminalId,
                        staffId,
                        request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId);

                    bool unlocked = request.RequestContext.Execute <SingleEntityDataServiceResponse <bool> >(unlockUserDataRequest).Entity;
                    if (!unlocked)
                    {
                        throw new UserAuthenticationException(
                                  SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_AuthenticationFailed,
                                  string.Format("User {0} was not allowed to be unlocked from terminal {1}", principal.UserId, terminalId));
                    }
                }

                return(new NullResponse());
            }
コード例 #2
0
            /// <summary>
            /// LogOff the user.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static NullResponse LogOffUser(UserLogOffRealtimeRequest request)
            {
                UserAuthenticationTransactionService.ThrowIfInvalidLogonConfiguration(request.LogOnConfiguration);
                TransactionService.TransactionServiceClient transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                ICommercePrincipal principal = request.RequestContext.GetPrincipal();

                if (string.IsNullOrEmpty(principal.UserId))
                {
                    throw new UserAuthenticationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_AuthenticationFailed, "User is not authenticated.");
                }

                transactionService.RetailServerStaffLogOff(principal.UserId, principal.ChannelId, principal.TerminalId, !principal.IsTerminalAgnostic);
                return(new NullResponse());
            }