예제 #1
0
        public string GetDomain(string host)
        {
            //TO DO Master connection string should be from app-setings
            var optionsBuilder = new DbContextOptionsBuilder <HCMasterContext>();

            optionsBuilder.UseSqlServer(CreateMasterConnectionString());
            HCMasterContext masterContext = new HCMasterContext(optionsBuilder.Options);

            string con = string.Empty;

            //get the organization from Business-Name
            MasterOrganization org = masterContext.MasterOrganization.Where(a => a.BusinessName == host && a.IsDeleted == false).FirstOrDefault();

            if (org != null)
            {
                //get the db credentials for new connection
                OrganizationDatabaseDetail orgData = masterContext.OrganizationDatabaseDetail.Where(a => a.Id == org.DatabaseDetailId && a.IsDeleted == false).FirstOrDefault();

                //initialize Domain token model to create new connection string
                DomainToken domainData = new DomainToken();
                domainData.ServerName   = orgData.ServerName;
                domainData.DatabaseName = orgData.DatabaseName;
                domainData.Password     = orgData.Password;
                domainData.UserName     = orgData.UserName;
                con = ConnectionString(domainData);
            }
            //return new connection string
            return(con);
        }
예제 #2
0
        public string CreateMasterConnectionString()
        {
            DomainToken domainToken = new DomainToken();

            domainToken.ServerName   = HCMasterConnectionStringEnum.Server;
            domainToken.DatabaseName = HCMasterConnectionStringEnum.Database;
            domainToken.UserName     = HCMasterConnectionStringEnum.User;
            domainToken.Password     = HCMasterConnectionStringEnum.Password;
            return(ConnectionString(domainToken));
        }
예제 #3
0
        private void CheckTokenValidity(DomainToken token)
        {
            var databaseToken = _iUnitOfWork.TokenRepository.GetByGuid(token.Guid);

            if (databaseToken == null || databaseToken.IsExpired)
            {
                throw TokenExpiredException.ThrowTokenExpiredException();
            }
            if (DateTime.UtcNow - databaseToken.GenerationDate <= TimeSpan.FromDays(21))
            {
                return;
            }
            ExpireToken(token);
            throw TokenExpiredException.ThrowTokenExpiredException();
        }
예제 #4
0
        private void SaveToken(Guid guid, string login, string userId, DateTime date)
        {
            var token = new DomainToken(guid, login, userId, date);

            var existingToken = _iUnitOfWork.TokenRepository.GetByCustomerId(userId);

            if (existingToken != null)
            {
                existingToken.Guid           = guid;
                existingToken.GenerationDate = date;
                existingToken.Login          = login;
                existingToken.UserId         = userId;
                existingToken.IsExpired      = false;
            }
            else
            {
                _iUnitOfWork.TokenRepository.Add(Mapper.Map <Token>(token));
            }

            _iUnitOfWork.SaveChanges();
        }
예제 #5
0
        /// <summary>
        /// create dynamically new connection string
        /// </summary>
        /// <param name="domainToken"></param>
        /// <returns></returns>
        public string ConnectionString(DomainToken domainToken)
        {
            string conn = @"Server=" + domainToken.ServerName + ";Database=" + domainToken.DatabaseName + ";Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=false;User ID=" + domainToken.UserName + ";Password="******";";

            return(conn);
        }
예제 #6
0
 private void ExpireToken(DomainToken token)
 {
     token.IsExpired = true;
     _iUnitOfWork.SaveChanges();
 }