示例#1
0
        public void CanGetAccountInfo()
        {
            //prod: var userId = "4a424531b1a24dadb114349238a07df7";
            var userId = "271945af9f6b47119e883dc17167aead";

            var settingsHelper = new Gigya.Umbraco.Module.Helpers.GigyaSettingsHelper();
            var logger         = new Logger(new FakeCmsLogger());
            var apiHelper      = new GigyaApiHelper(settingsHelper, logger);

            var settings = Settings();
            var response = apiHelper.GetAccountInfo(userId, settings);

            if (response == null || response.GetErrorCode() != 0)
            {
                Assert.Fail("Invalid response");
            }
        }
        /// <summary>
        /// Login or register a user.
        /// </summary>
        /// <param name="model">Details from the client e.g. signature and userId.</param>
        /// <param name="settings">Gigya module settings.</param>
        /// <param name="response">Response model that will be returned to the client.</param>
        public virtual void LoginOrRegister(LoginModel model, IGigyaModuleSettings settings, ref LoginResponseModel response)
        {
            response.Status = ResponseStatus.Error;

            if (!settings.EnableRaas)
            {
                if (settings.DebugMode)
                {
                    _logger.Debug("RaaS not enabled so login aborted.");
                }
                return;
            }

            if (!_gigyaApiHelper.ValidateApplicationKeySignature(model.UserId, settings, model.SignatureTimestamp, model.Signature))
            {
                if (settings.DebugMode)
                {
                    _logger.Debug("Invalid user signature for login request.");
                }
                return;
            }

            // get user info
            var userInfoResponse = _gigyaApiHelper.GetAccountInfo(model.UserId, settings);

            if (userInfoResponse == null || userInfoResponse.GetErrorCode() != 0)
            {
                _logger.Error("Failed to getAccountInfo");
                return;
            }

            var gigyaModel = JsonConvert.DeserializeObject <ExpandoObject>(userInfoResponse.GetResponseText());

            ThrowTestingExceptionIfRequired(settings, gigyaModel);

            // find what field has been configured for the Umbraco username
            List <MappingField> mappingFields = GetMappingFields(settings);
            var username = GetUmbracoUsername(mappingFields, gigyaModel);

            var memberService = U.Core.ApplicationContext.Current.Services.MemberService;
            var userExists    = memberService.Exists(username);

            if (!userExists)
            {
                // user doesn't exist so create a new one
                var user = CreateUser(username, gigyaModel, settings);
                if (user == null)
                {
                    return;
                }
            }

            // user logged into Gigya so now needs to be logged into Umbraco
            var authenticated = AuthenticateUser(username, settings, userExists, gigyaModel, mappingFields);

            response.Status = authenticated ? ResponseStatus.Success : ResponseStatus.Error;
            if (authenticated)
            {
                response.RedirectUrl = settings.RedirectUrl;
            }
        }