/// <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()); }
/// <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()); }