コード例 #1
0
        public TerminateUserSessionResponse TerminateUserSession(TerminateUserSessionRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckForNullReference(request.SessionIds, "SessionIds");

            // exclude the current session - user must not delete own active session!
            var sessionIds = request.SessionIds.Where(id => id != CurrentUserSessionId).ToList();

            if (sessionIds.Count == 0)
            {
                throw new RequestValidationException(SR.MessageCannotDeleteOwnUserCurrentSession);
            }

            // load all sessions by id
            var where = new UserSessionSearchCriteria();
            where.SessionId.In(sessionIds);

            var sessions = PersistenceContext.GetBroker <IUserSessionBroker>().Find(where);

            // terminate all sessions
            foreach (var session in sessions)
            {
                session.Terminate();
            }

            return(new TerminateUserSessionResponse(sessions.Select(s => s.SessionId).ToList()));
        }
コード例 #2
0
        public TerminateUserSessionResponse TerminateUserSession(TerminateUserSessionRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckForNullReference(request.SessionIds, "SessionIds");

            // exclude the current session - user must not delete own active session!
            var sessionIds = request.SessionIds.Where(id => id != CurrentUserSessionId).ToList();

            if (sessionIds.Count == 0)
            {
                throw new RequestValidationException(SR.MessageCannotDeleteOwnUserCurrentSession);
            }

            // load all sessions by id
            var where = new UserSessionSearchCriteria();
            where.SessionId.In(sessionIds);
            where.IsImpersonated.EqualTo(false);                // impersonated sessions cannot be terminated in this manner

            var sessions = PersistenceContext.GetBroker <IUserSessionBroker>().Find(where);

            // terminate sessions
            foreach (var session in sessions)
            {
                // but only if the current user is actually authorized to do so
                EnsureCurrentUserAuthorizedToManage(session.User.AccountType);
                session.Terminate();
            }

            return(new TerminateUserSessionResponse(sessions.Select(s => s.SessionId).ToList()));
        }
コード例 #3
0
        protected override bool DeleteItems(IList <UserSessionSummary> items, out IList <UserSessionSummary> deletedItems, out string failureMessage)
        {
            List <string> terminatedSessionIds = null;

            Platform.GetService <IUserAdminService>(service => {
                var request          = new TerminateUserSessionRequest(items.Select(s => s.SessionId).ToList());
                terminatedSessionIds = service.TerminateUserSession(request).TerminatedSessionIds;
            });
            deletedItems   = terminatedSessionIds.Select(id => items.First(s => s.SessionId == id)).ToList();
            failureMessage = null;
            return(true);
        }