public void Can_save_and_load_externalAuthenticationRecord()
        {
            var externalAuthenticationRecord = new ExternalAuthenticationRecord
            {
                Email = "Email 1",
                ExternalIdentifier        = "ExternalIdentifier 1",
                ExternalDisplayIdentifier = "ExternalDisplayIdentifier 1",
                OAuthToken         = "OAuthToken 1",
                OAuthAccessToken   = "OAuthAccessToken 1",
                ProviderSystemName = "ProviderSystemName 1",
                Customer           = GetTestCustomer()
            };

            var fromDb = SaveAndLoadEntity(externalAuthenticationRecord);

            fromDb.ShouldNotBeNull();
            fromDb.Email.ShouldEqual("Email 1");
            fromDb.ExternalIdentifier.ShouldEqual("ExternalIdentifier 1");
            fromDb.ExternalDisplayIdentifier.ShouldEqual("ExternalDisplayIdentifier 1");
            fromDb.OAuthToken.ShouldEqual("OAuthToken 1");
            fromDb.OAuthAccessToken.ShouldEqual("OAuthAccessToken 1");
            fromDb.ProviderSystemName.ShouldEqual("ProviderSystemName 1");

            fromDb.Customer.ShouldNotBeNull();
        }
示例#2
0
        public virtual void AssociateExternalAccountWithUser(Customer customer, OpenAuthenticationParameters parameters)
        {
            if (customer == null)
            {
                throw new ArgumentNullException("customer");
            }

            //find email
            string email = null;

            if (parameters.UserClaims != null)
            {
                foreach (var userClaim in parameters.UserClaims
                         .Where(x => x.Contact != null && !String.IsNullOrEmpty(x.Contact.Email)))
                {
                    //found
                    email = userClaim.Contact.Email;
                    break;
                }
            }

            var externalAuthenticationRecord = new ExternalAuthenticationRecord()
            {
                CustomerId                = customer.Id,
                Email                     = email,
                ExternalIdentifier        = parameters.ExternalIdentifier,
                ExternalDisplayIdentifier = parameters.ExternalDisplayIdentifier,
                OAuthToken                = parameters.OAuthToken,
                OAuthAccessToken          = parameters.OAuthAccessToken,
                ProviderSystemName        = parameters.ProviderSystemName,
            };

            _externalAuthenticationRecordRepository.Insert(externalAuthenticationRecord);
        }
        /// <summary>
        /// 重写此方法用处理昵称(nickname)
        /// </summary>
        /// <param name="customer"></param>
        /// <param name="parameters"></param>
        public override void AssociateExternalAccountWithUser(Nop.Core.Domain.Customers.Customer customer, Nop.Services.Authentication.External.OpenAuthenticationParameters parameters)
        {
            if (customer == null)
            {
                throw new ArgumentNullException("customer");
            }

            //find nick name
            string nickName = null;

            if (parameters.UserClaims != null)
            {
                foreach (var userClaim in parameters.UserClaims
                         .Where(x => x.Name != null && !String.IsNullOrEmpty(x.Name.Nickname)))
                {
                    //found
                    nickName = userClaim.Name.Nickname;
                    break;
                }
            }

            var externalAuthenticationRecord = new ExternalAuthenticationRecord()
            {
                CustomerId                = customer.Id,
                Email                     = string.Empty,
                ExternalIdentifier        = parameters.ExternalIdentifier,
                ExternalDisplayIdentifier = nickName,
                OAuthToken                = parameters.OAuthToken,
                OAuthAccessToken          = parameters.OAuthAccessToken,
                ProviderSystemName        = parameters.ProviderSystemName,
            };

            _externalAuthenticationRecordRepository.Insert(externalAuthenticationRecord);
        }
示例#4
0
        /// <summary>
        /// Delete the external authentication record
        /// </summary>
        /// <param name="externalAuthenticationRecord">External authentication record</param>
        /// <returns>A task that represents the asynchronous operation</returns>
        public virtual async Task DeleteExternalAuthenticationRecordAsync(ExternalAuthenticationRecord externalAuthenticationRecord)
        {
            if (externalAuthenticationRecord == null)
                throw new ArgumentNullException(nameof(externalAuthenticationRecord));

            await _externalAuthenticationRecordRepository.DeleteAsync(externalAuthenticationRecord, false);
        }
        public virtual void AssociateExternalAccountWithUser(Account account, OpenAuthenticationParameters parameters)
        {
            if (account == null)
                throw new ArgumentNullException("account");

            //find email
            string email = null;
            if (parameters.UserClaims != null)
                foreach (var userClaim in parameters.UserClaims
                    .Where(x => x.Contact != null && !String.IsNullOrEmpty(x.Contact.Email)))
                    {
                        //found
                        email = userClaim.Contact.Email;
                        break;
                    }

            var externalAuthenticationRecord = new ExternalAuthenticationRecord()
            {
                AccountId = account.Id,
                Email = email,
                ExternalIdentifier = parameters.ExternalIdentifier,
                ExternalDisplayIdentifier = parameters.ExternalDisplayIdentifier,
                OAuthToken = parameters.OAuthToken,
                OAuthAccessToken = parameters.OAuthAccessToken,
                ProviderSystemName = parameters.ProviderSystemName,
            };

            _externalAuthenticationRecordRepository.Insert(externalAuthenticationRecord);
        }
        /// <summary>
        /// Delete the external authentication record
        /// </summary>
        /// <param name="externalAuthenticationRecord">External authentication record</param>
        public virtual void DeleteExternalAuthenticationRecord(ExternalAuthenticationRecord externalAuthenticationRecord)
        {
            if (externalAuthenticationRecord == null)
            {
                throw new ArgumentNullException(nameof(externalAuthenticationRecord));
            }

            _externalAuthenticationRecordRepository.Delete(externalAuthenticationRecord);
        }
示例#7
0
        public void DeletExternalAuthenticationRecord(ExternalAuthenticationRecord externalAuthenticationRecord)
        {
            if (externalAuthenticationRecord == null)
            {
                throw new ArgumentNullException("externalAuthenticationRecord");
            }

            _externalAuthenticationRecordRepository.Delete(externalAuthenticationRecord);
        }
示例#8
0
        /// <summary>
        /// Delete the external authentication record
        /// </summary>
        /// <param name="externalAuthenticationRecord">External authentication record</param>
        public virtual async Task DeleteExternalAuthenticationRecord(ExternalAuthenticationRecord externalAuthenticationRecord)
        {
            if (externalAuthenticationRecord == null)
            {
                throw new ArgumentNullException("externalAuthenticationRecord");
            }

            await _externalAuthenticationRecordRepository.DeleteAsync(externalAuthenticationRecord);
        }
示例#9
0
        /// <summary>
        /// Associate external account with customer
        /// </summary>
        /// <param name="customer">Customer</param>
        /// <param name="parameters">External authentication parameters</param>
        /// <returns>A task that represents the asynchronous operation</returns>
        public virtual async Task AssociateExternalAccountWithUserAsync(Customer customer, ExternalAuthenticationParameters parameters)
        {
            if (customer == null)
                throw new ArgumentNullException(nameof(customer));

            var externalAuthenticationRecord = new ExternalAuthenticationRecord
            {
                CustomerId = customer.Id,
                Email = parameters.Email,
                ExternalIdentifier = parameters.ExternalIdentifier,
                ExternalDisplayIdentifier = parameters.ExternalDisplayIdentifier,
                OAuthAccessToken = parameters.AccessToken,
                ProviderSystemName = parameters.ProviderSystemName
            };

            await _externalAuthenticationRecordRepository.InsertAsync(externalAuthenticationRecord, false);
        }
示例#10
0
        /// <summary>
        /// Accociate external account with customer
        /// </summary>
        /// <param name="customer">Customer</param>
        /// <param name="parameters">External authentication parameters</param>
        public virtual void AssociateExternalAccountWithUser(Customer customer, ExternalAuthenticationParameters parameters)
        {
            if (customer == null)
            {
                throw new ArgumentNullException("customer");
            }

            var externalAuthenticationRecord = new ExternalAuthenticationRecord
            {
                CustomerId                = customer.Id,
                Email                     = parameters.Email,
                ExternalIdentifier        = parameters.ExternalIdentifier,
                ExternalDisplayIdentifier = parameters.ExternalDisplayIdentifier,
                OAuthAccessToken          = parameters.AccessToken,
                ProviderSystemName        = parameters.ProviderSystemName,
            };

            _externalAuthenticationRecordRepository.Insert(externalAuthenticationRecord);
        }
示例#11
0
 public void DeletExternalAuthenticationRecord(ExternalAuthenticationRecord externalAuthenticationRecord)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 /// Delete the external authentication record
 /// </summary>
 /// <param name="externalAuthenticationRecord">External authentication record</param>
 public void DeleteExternalAuthenticationRecord(ExternalAuthenticationRecord externalAuthenticationRecord)
 {
     _openAuthenticationService.DeleteExternalAuthenticationRecord(externalAuthenticationRecord);
 }