コード例 #1
0
ファイル: Group.Service.cs プロジェクト: Terradue/DotNetTep
        /// <summary>
        /// Get the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Get(UserGetGroupsRequestTep request)
        {
            List <WebGroup> result = new List <WebGroup>();

            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user/{{usrId}}/group PUT usrId='{0}'", request.UsrId));

                UserTep    user = UserTep.FromIdentifier(context, request.UsrId);
                List <int> ids  = user.GetGroups();

                List <Group> groups = new List <Group>();
                foreach (int id in ids)
                {
                    groups.Add(Group.FromId(context, id));
                }

                foreach (Group grp in groups)
                {
                    result.Add(new WebGroup(grp));
                }

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #2
0
        public object Get(AnalyticsRequestTep request)
        {
            var          context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);
            WebAnalytics result  = new WebAnalytics();

            try {
                context.Open();
                context.LogInfo(this, string.Format("/analytics GET - type='{0}', identifier='{1}'", request.Type, request.Identifier));

                Analytics analytics = null;

                if (context.UserId == 0)
                {
                    request.Type = "all";
                }

                switch (request.Type)
                {
                case "user":
                    analytics = new Analytics(context, UserTep.FromIdentifier(context, request.Identifier));
                    analytics.Load(request.startdate, request.enddate);
                    break;

                case "community":
                    analytics = new Analytics(context, ThematicCommunity.FromIdentifier(context, request.Identifier));
                    analytics.Load(request.startdate, request.enddate);
                    break;

                case "group":
                    analytics = new Analytics(context, Group.FromIdentifier(context, request.Identifier));
                    analytics.Load(request.startdate, request.enddate);
                    break;

                case "service":
                    analytics = new Analytics(context, Service.FromIdentifier(context, request.Identifier));
                    analytics.Load(request.startdate, request.enddate);
                    break;

                case "all":
                    analytics = new Analytics(context);
                    analytics.Load(request.startdate, request.enddate);
                    break;

                default:
                    break;
                }
                if (analytics != null)
                {
                    result = new WebAnalytics(analytics);
                }

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #3
0
        public object Get(ThematicAppCacheRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);

            context.Open();
            try {
                context.LogInfo(this, string.Format("/apps/cache GET"));
                var appFactory = new ThematicAppCachedFactory(context);
                if (!string.IsNullOrEmpty(request.Uid))
                {
                    //refresh only a given app
                    appFactory.RefreshCachedApp(request.Uid);
                }
                else if (!string.IsNullOrEmpty(request.Username))
                {
                    //refresh only for private apps
                    var user = UserTep.FromIdentifier(context, request.Username);
                    if (user.Id == context.UserId)
                    {
                        appFactory.RefreshCachedAppsForUser(user);
                    }
                }
                else if (!string.IsNullOrEmpty(request.Community))
                {
                    //refresh only for community apps
                    var community = ThematicCommunity.FromIdentifier(context, request.Community);
                    if (community.CanUserManage(context.UserId))
                    {
                        appFactory.RefreshCachedAppsForCommunity(community);
                    }
                }
                else
                {
                    //user should be admin
                    if (context.UserLevel == UserLevel.Administrator)
                    {
                        //case TEP -- we don't want user privates apps to be cached
                        appFactory.RefreshCachedApps(false, true, true);
                    }
                }
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(new WebResponseBool(true));
        }
コード例 #4
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Put(UpdateProfileFromRemoteTep request)
        {
            WebUserTep result  = null;
            var        context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);

            context.Open();
            var usr = UserTep.FromIdentifier(context, request.Identifier);

            try
            {
                usr.LoadProfileFromRemote();
                result = new WebUserTep(context, usr);
            }catch (Exception e) {
                context.LogError(this, e.Message + " - " + e.StackTrace);
            }
            context.Close();
            return(result);
        }
コード例 #5
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Get(UserGetSSORequestTep request)
        {
            WebUserTep result;
            var        context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user/sso/{{Id}} GET Id='{0}'", request.Identifier));
                UserTep user = UserTep.FromIdentifier(context, request.Identifier);
                //user.FindTerradueCloudUsername();
                result = new WebUserTep(context, user);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #6
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Put(UserUpdateSSORequestTep request)
        {
            WebUserTep result;
            var        context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user/sso PUT Identifier='{0}',T2Username='******'", request.Identifier, request.T2Username));
                UserTep user = UserTep.FromIdentifier(context, request.Identifier);
                user.TerradueCloudUsername = request.T2Username;
                user.StoreCloudUsername();
                result = new WebUserTep(context, user);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #7
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Put(UpdateBulkUsersProfileFromRemoteTep request)
        {
            IfyWebContext context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/users/profile PUT Ids='{0}'", string.Join(",", request.Identifiers)));

                foreach (var identifier in request.Identifiers)
                {
                    try
                    {
                        var usr = UserTep.FromIdentifier(context, identifier);
                        usr.LoadProfileFromRemote();
                    }catch (Exception e) {
                        context.LogError(this, e.Message + " - " + e.StackTrace);
                    }
                }

                try{
                    var portalname = string.Format("{0} Portal", context.GetConfigValue("SiteNameShort"));
                    var subject    = context.GetConfigValue("EmailBulkActionSubject");
                    subject = subject.Replace("$(SITENAME)", portalname);
                    var body = context.GetConfigValue("EmailBulkActionBody");
                    body = body.Replace("$(ADMIN)", context.Username);
                    body = body.Replace("$(ACTION)", "User remote profile load");
                    body = body.Replace("$(IDENTIFIERS)", string.Join(",", request.Identifiers));
                    context.SendMail(context.GetConfigValue("SmtpUsername"), context.GetConfigValue("SmtpUsername"), subject, body);
                } catch (Exception e) {
                    context.LogError(this, e.Message + " - " + e.StackTrace);
                }

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message + " - " + e.StackTrace);
                context.Close();
                throw e;
            }

            return(true);
        }
コード例 #8
0
        public object Post(UserAddTransactionRequestTep request)
        {
            var        context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);
            WebUserTep result;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/transaction/user POST Identifier='{0}', Balance='{1}'", request.Identifier, request.Balance));

                UserTep user = UserTep.FromIdentifier(context, request.Identifier);
                user.AddAccountingTransaction(request.Balance, (TransactionKind)request.Kind);

                result = new WebUserTep(context, user);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #9
0
        public object Get(TransactionsSearchRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            IOpenSearchResultCollection result;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/transaction/search GET"));

                // Load the complete request
                var httpRequest = HttpContext.Current.Request;

                EntityList <Transaction> transactions = new EntityList <Transaction>(context);
                if (context.AccessLevel != EntityAccessLevel.Administrator || httpRequest.QueryString["author"] == null)
                {
                    //Only admin can see others transactions
                    transactions.SetFilter("OwnerId", context.UserId + "");
                }
                else
                {
                    var user = UserTep.FromIdentifier(context, httpRequest.QueryString["author"]);
                    transactions.SetFilter("OwnerId", user.Id + "");
                }
                transactions.AddSort("LogTime", SortDirection.Descending);

                var ose = MasterCatalogue.OpenSearchEngine;

                Type responseType = OpenSearchFactory.ResolveTypeFromRequest(httpRequest.QueryString, httpRequest.Headers, ose);
                result = ose.Query(transactions, httpRequest.QueryString, responseType);

                OpenSearchFactory.ReplaceOpenSearchDescriptionLinks(transactions, result);

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(new HttpResult(result.SerializeToString(), result.ContentType));
        }
コード例 #10
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Delete(UserDeleteRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);

            context.Open();
            var usr = UserTep.FromIdentifier(context, request.UsrId);

            try{
                var portalname = string.Format("{0} Portal", context.GetConfigValue("SiteNameShort"));
                var subject    = context.GetConfigValue("EmailUserDeleteSubject");
                subject = subject.Replace("$(SITENAME)", portalname);
                var body = context.GetConfigValue("EmailUserDeleteBody");
                body = body.Replace("$(USERNAME)", usr.Username);
                body = body.Replace("$(ADMIN)", context.Username);
                context.SendMail(context.GetConfigValue("SmtpUsername"), context.GetConfigValue("SmtpUsername"), subject, body);
            } catch (Exception e) {
                context.LogError(this, e.Message + " - " + e.StackTrace);
            }
            usr.Delete();
            context.Close();
            return(true);
        }
コード例 #11
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Get(UserHasT2NotebooksRequestTep request)
        {
            bool result = false;

            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user/{{usrId}}/notebooks GET usrId='{0}'", request.UsrId));

                UserTep user = UserTep.FromIdentifier(context, request.UsrId);
                if (context.AccessLevel == EntityAccessLevel.Administrator || context.Username == request.UsrId)
                {
                    result = user.HasT2NotebooksAccount();
                }

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #12
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        public object Put(UserUpdateStatusRequestTep request)
        {
            var        context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);
            WebUserTep result;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user/status PUT Id='{0}',Status='{1}'", request.Id > 0 ? request.Id + "" : request.Identifier, request.AccountStatus));
                UserTep user = (request.Id == 0 ? (!string.IsNullOrEmpty(request.Identifier) ? UserTep.FromIdentifier(context, request.Identifier) : null) : UserTep.FromId(context, request.Id));

                user.AccountStatus = request.AccountStatus;
                user.Store();
                context.LogDebug(this, string.Format("Status of user '{0}' has been updated to {1}", user.Username, request.AccountStatus));
                result = new WebUserTep(context, user);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
コード例 #13
0
ファイル: User.Service.cs プロジェクト: Terradue/DotNetTep
        /// <summary>
        /// Update the specified user.
        /// </summary>
        /// <param name="request">Request.</param>
        /// <returns>the user</returns>
        public object Put(UserUpdateRequestTep request)
        {
            var        context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebUserTep result;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/user PUT Id='{0}'", request.Id > 0 ? request.Id + "" : request.Identifier));
                UserTep user = (request.Id == 0 ? (!string.IsNullOrEmpty(request.Identifier) ? UserTep.FromIdentifier(context, request.Identifier) : null) : UserTep.FromId(context, request.Id));
                if (context.UserId != user.Id && context.AccessLevel != EntityAccessLevel.Administrator)
                {
                    throw new Exception("Action not allowed");
                }
                var level = user.Level;
                user       = request.ToEntity(context, user);
                user.Level = level;//we can only change the level from the dedicated request (admin only)
                user.Store();
                context.LogDebug(this, string.Format("User '{0}' has been updated", user.Username));
                result = new WebUserTep(context, user);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }