Exemplo n.º 1
0
 private void SaveTheSession(SessionOperation sessionOperation, PrincipalUserSession principalService)
 {
     if (!principalService.IsAuthenticated)
     {
         _repositoryService.AddOnCommit(AppCoreDbContextNames.Core, sessionOperation);
         _repositoryService.SaveChanges(AppCoreDbContextNames.Core);
         return;
     }
     AddSession(sessionOperation, principalService);
 }
Exemplo n.º 2
0
        public void SaveSessionOperationAsync(SessionOperation sessionOperation, IPrincipalService principalService)
        {
            var principal = new PrincipalUserSession
            {
                UniqueSessionIdentifier        = principalService.UniqueSessionIdentifier,
                CurrentPrincipalIdentifierGuid = principalService.CurrentPrincipalIdentifierGuid,
                IsAuthenticated = principalService.IsAuthenticated
            };

            HostingEnvironment.QueueBackgroundWorkItem(x => { SaveTheSession(sessionOperation, principal); });
        }
Exemplo n.º 3
0
        private void AddSession(SessionOperation sessionOperation, PrincipalUserSession principalService)
        {
            var session = _sessionService.Get(principalService.UniqueSessionIdentifier);

            if (session == null)
            {
                if (!principalService.CurrentPrincipalIdentifierGuid.HasValue)
                {
                    return;
                }
                try
                {
                    _semaphoreSlim.Wait();
                    session = _sessionService.Get(principalService.UniqueSessionIdentifier);
                    if (session == null)
                    {
                        var principal = _principalManagmentService.Get(principalService.CurrentPrincipalIdentifierGuid.Value);
                        session = _sessionService.Create(principal, principalService.UniqueSessionIdentifier);
                        session.Operations.Add(sessionOperation);
                        _repositoryService.SaveChanges(AppCoreDbContextNames.Core);
                        return;
                    }
                }
                finally
                {
                    _semaphoreSlim.Release();
                }
            }

            sessionOperation.SessionFK = session.Id;
            _repositoryService.AddOnCommit(AppCoreDbContextNames.Core, sessionOperation);
            _repositoryService.SaveChanges(AppCoreDbContextNames.Core);


            //return session;
        }