Ejemplo n.º 1
0
 public void AddDefaultItem()
 {
     if (_templates == null)
     {
         _templates = new TemplateGroups();
         _templates.AddDefaultItem();
     }
     if (_rootSign == null)
     {
         _rootSign = new SignGroupTree();
         //_rootSign.AddDefaultItem();
     }
     if (_libraryGroups == null)
     {
         _libraryGroups = new LibraryGroups();
         _libraryGroups.AddDefaultItem();
     }
     if (_sessionInfos == null)
     {
         _sessionInfos = new SessionInfos();
     }
     if (_sources == null)
     {
         _sources = new ListSet <DataItem>();
     }
     if (_recents == null)
     {
         _recents = new Recents();
     }
     if (_lstCategory == null)
     {
         _lstCategory = new List <LiveCategory>();
     }
 }
Ejemplo n.º 2
0
 public void Dispose()
 {
     if (_sessionInfos != null)
     {
         _sessionInfos.Dispose();
         _sessionInfos = null;
     }
     if (_libraryGroups != null)
     {
         _libraryGroups.Dispose();
         _libraryGroups = null;
     }
     if (_rootSign != null)
     {
         _rootSign.Dispose();
         SignGroupTree._allSigns.Dispose();
         SignGroupTree._allSigns.Clear();
         SignGroupTree._allSigns = null;
         SignGroupTree._allGroups.Dispose();
         SignGroupTree._allGroups.Clear();
         SignGroupTree._allGroups = null;
     }
     if (_sources != null)
     {
         _sources.Clear();
         _sources = null;
     }
 }
Ejemplo n.º 3
0
 public ProjectInfo()
 {
     _rootSign      = new SignGroupTree();
     _templates     = new TemplateGroups();
     _libraryGroups = new LibraryGroups();
     _sessionInfos  = new SessionInfos();
     _sources       = new ListSet <DataItem>();
     _recents       = new Recents();
 }
Ejemplo n.º 4
0
        public void Clear()
        {
            _rootSign.Dispose();
            _templates.Dispose();
            _libraryGroups.Dispose();
            _sessionInfos.Dispose();
            _sources.Dispose();


            _rootSign      = new SignGroupTree();
            _templates     = new TemplateGroups();
            _libraryGroups = new LibraryGroups();
            _sessionInfos  = new SessionInfos();
            _sources       = new ListSet <DataItem>();
            _recents       = new Recents();
        }
Ejemplo n.º 5
0
    // Command handlers

    // [CommandHandler] inherited
    public virtual Task SignIn(SignInCommand command, CancellationToken cancellationToken = default)
    {
        var(session, user, authenticatedIdentity) = command;
        var context = CommandContext.GetCurrent();

        if (Computed.IsInvalidating())
        {
            _ = GetAuthInfo(session, default);
            _ = GetSessionInfo(session, default);
            var invSessionInfo = context.Operation().Items.Get <SessionInfo>();
            if (invSessionInfo != null)
            {
                _ = GetUser(invSessionInfo.UserId, default);
                _ = GetUserSessions(invSessionInfo.UserId, default);
            }
            return(Task.CompletedTask);
        }

        if (!user.Identities.ContainsKey(authenticatedIdentity))
        {
            throw new ArgumentOutOfRangeException(
                      $"{nameof(command)}.{nameof(SignInCommand.AuthenticatedIdentity)}");
        }

        var sessionInfo = SessionInfos.GetValueOrDefault(session.Id);

        sessionInfo ??= new SessionInfo(session.Id, Clocks.SystemClock.Now);
        if (sessionInfo.IsSignOutForced)
        {
            throw Errors.ForcedSignOut();
        }

        var isNewUser = false;
        var userWithAuthenticatedIdentity = GetByUserIdentity(authenticatedIdentity);

        if (string.IsNullOrEmpty(user.Id))
        {
            // No user.Id -> try to find existing user by authenticatedIdentity
            if (userWithAuthenticatedIdentity == null)
            {
                user = user with {
                    Id = GetNextUserId()
                };
                isNewUser = true;
            }
            else
            {
                user = MergeUsers(userWithAuthenticatedIdentity, user);
            }
        }
        else
        {
            // We have Id -> the user exists for sure, but we might need to switch
            // to userWithAuthenticatedIdentity, otherwise we'll register the same
            // UserIdentity for 2 or more users
            _ = long.Parse(user.Id, NumberStyles.Integer, CultureInfo.InvariantCulture);
            var existingUser = Users[user.Id];
            user = userWithAuthenticatedIdentity ?? MergeUsers(existingUser, user);
        }

        // Update user.Version
        user = user with {
            Version = VersionGenerator.NextVersion(user.Version),
        };

        // Update SessionInfo
        sessionInfo = sessionInfo with {
            AuthenticatedIdentity = authenticatedIdentity,
            UserId = user.Id,
        };

        // Persist changes
        Users[user.Id] = user;
        sessionInfo    = UpsertSessionInfo(sessionInfo, sessionInfo.Version);
        context.Operation().Items.Set(sessionInfo);
        context.Operation().Items.Set(isNewUser);
        return(Task.CompletedTask);
    }