예제 #1
0
            /// <summary>
            /// Sets the user token.
            /// </summary>
            /// <param name="userToken">The user token.</param>
            internal void SetUserToken(UserToken userToken)
            {
                this.OnlineContext.SetUserToken(userToken);

                if (userToken == null)
                {
                    this.OfflineContext.SetUserToken(userToken);
                }
                else
                {
                    CommerceUserToken commerceUserToken = userToken as CommerceUserToken;

                    if (commerceUserToken != null)
                    {
                        this.OfflineContext.SetUserToken(commerceUserToken.CommerceRuntimeToken);
                    }
                }
            }
예제 #2
0
            /// <summary>
            /// Gets the user token.
            /// </summary>
            /// <returns>The user token.</returns>
            internal UserToken GetUserToken()
            {
                UserToken onlineUserToken             = this.OnlineContext.GetUserToken();
                CommerceRuntimeUserToken offlineToken = this.OfflineContext.GetUserToken() as CommerceRuntimeUserToken;

                if (onlineUserToken == null)
                {
                    return(offlineToken);
                }
                else if (onlineUserToken is UserIdToken)
                {
                    CommerceUserToken commerceUserToken = new CommerceUserToken(onlineUserToken as UserIdToken);
                    commerceUserToken.CommerceRuntimeToken = offlineToken;
                    return(commerceUserToken);
                }
                else
                {
                    return(onlineUserToken);
                }
            }
            /// <summary>
            /// Sets the user identity.
            /// </summary>
            /// <param name="userToken">The user token.</param>
            internal static void SetUserIdentity(UserToken userToken)
            {
                ThrowIf.Null(userToken, "userToken");
                CommerceUserToken        commerceUserToken = userToken as CommerceUserToken;
                CommerceRuntimeUserToken runtimeToken      = userToken as CommerceRuntimeUserToken;

                // A user token has to be either a commerce runtime token or a commerce user token which can contain a commerce runtime token, or retail server token or both.
                if (commerceUserToken == null && runtimeToken == null)
                {
                    throw new RetailProxy.UserAuthenticationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidUserToken.ToString(), string.Format("Invalid token type provided {0}.", userToken.GetType()));
                }

                runtimeToken = commerceUserToken == null ? runtimeToken : commerceUserToken.CommerceRuntimeToken;

                if (runtimeToken == null)
                {
                    throw new RetailProxy.UserAuthenticationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidUserToken.ToString(), string.Format("The provided commerce runtime token cannot be null."));
                }

                Identity = Newtonsoft.Json.JsonConvert.DeserializeObject <CommerceIdentity>(runtimeToken.Token);
            }