Beispiel #1
0
        object list(string parentId)
        {
            var site = (Site)jc["site"];

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //如果没有站点的管理权限
            if (relation == null || (relation.PermissionLevel != PermissionLevel.ADMIN && relation.PermissionLevel != PermissionLevel.AUDIT))
            {
                return new { code = 403, msg = "没有权限访问" }
            }
            ;

            #endregion

            var data = (from q in Category.CreateContext()
                        where q.ParentId == (string.IsNullOrWhiteSpace(parentId) ? string.Empty : parentId) && q.SiteId == site.Id
                        orderby q.SortOrder ascending, q.Title ascending
                        select new
            {
                id = q.Id,
                name = q.Title,
                isParent = q.HasChildren
            }).ToList();

            return(data);
        }
Beispiel #2
0
        object reset(string userId)
        {
            var site = (Site)jc["site"];

            var relation = (from q in SiteUsers.CreateContext()
                            where q.SiteId == site.Id && q.UserId == userId
                            select q).FirstOrDefault();

            if (relation == null)
            {
                return new { code = -1, msg = "指定的用户在该站点下不存在" }
            }
            ;

            using (ILinqContext <User> cx = User.CreateContext())
            {
                var user = User.Get(cx, relation.UserId);

                if (user == null)
                {
                    return new { code = -2, msg = "指定的用户已不存在" }
                }
                ;

                //重置密码
                user.UpdatePassword("111111");

                cx.SubmitChanges();
            }

            return(new { code = 1, msg = "重置成功" });
        }
Beispiel #3
0
        object detail(string id)
        {
            var site = (Site)jc["site"];

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //如果没有站点的管理权限
            if (relation == null || relation.PermissionLevel != PermissionLevel.ADMIN)
            {
                return new { code = 403, msg = "没有权限访问" }
            }
            ;

            #endregion

            var category = (from q in Category.CreateContext()
                            where q.Id == id && q.SiteId == site.Id
                            select q).FirstOrDefault();

            if (category == null)
            {
                return new { code = -1, msg = "指定的栏目不存在" }
            }
            ;

            object parent = new { id = string.Empty, title = string.Empty };

            if (!string.IsNullOrEmpty(category.ParentId))
            {
                parent = (from q in Category.CreateContext()
                          where q.Id == category.ParentId
                          select new
                {
                    id = q.Id,
                    title = q.Title
                }).FirstOrDefault();
            }

            return(new
            {
                code = 1,
                data = new
                {
                    id = category.Id,
                    site_id = category.SiteId,
                    title = category.Title,
                    url = category.Url,
                    parent = parent,
                    date_created = category.DateCreated,
                    sort_order = category.SortOrder,
                    node_path = category.NodePath,
                    need_login_read = category.NeedLogin2Read,
                    show_in_menu = category.ShowInMenu
                }
            });
        }
Beispiel #4
0
        object delete(string userId)
        {
            var site = (Site)jc["site"];

            using (ILinqContext <SiteUsers> cx = SiteUsers.CreateContext())
            {
                var relation = (from q in cx
                                where q.SiteId == site.Id && q.UserId == userId
                                select q).FirstOrDefault();

                if (relation == null)
                {
                    return new { code = -1, msg = "指定的用户在该站点下不存在" }
                }
                ;

                if (relation.UserId == jc.UserName)
                {
                    return new { code = -2, msg = "不能删除自己的账号" }
                }
                ;

                //删除栏目与用户的关系
                CategoryUsers.Where("SiteId = {0}", site.Id).Where("UserId = {0}", relation.UserId).Delete();

                //删除站点用户关系

                cx.Remove(relation);
                cx.SubmitChanges();
            }

            return(new { code = 1, msg = "删除成功" });
        }
Beispiel #5
0
        private void WidgetController_BeforeActionExecute(object sender, BeforeActionExecuteEventArgs e)
        {
            JContext jc = e.JContext;

            if (jc == null)
            {
                //服务器错误
                ResponseUtil.OutputJson(httpContext.Response, new { code = 500, msg = "不合法请求" });
                e.PreventDefault = true;
                return;
            }

            if (!jc.IsAuth)
            {
                //权限验证失败
                ResponseUtil.OutputJson(httpContext.Response, new { code = 403, msg = "没有权限访问" });
                e.PreventDefault = true;
                return;
            }

            #region 校验站点信息

            if (string.IsNullOrEmpty(jc.Params["siteId"]))
            {
                ResponseUtil.OutputJson(httpContext.Response, new { code = 200, msg = "参数列表不正确,缺少SiteId参数" });
                e.PreventDefault = true;
                return;
            }

            var site = Site.Get(jc.Params["siteId"]);

            if (site == null)
            {
                ResponseUtil.OutputJson(httpContext.Response, new { code = 200, msg = "指定的站点不存在" });
                e.PreventDefault = true;
                return;
            }

            #endregion

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //只有管理人员才可以对站点的挂件进行编辑
            if (relation == null || relation.PermissionLevel != PermissionLevel.ADMIN)
            {
                ResponseUtil.OutputJson(httpContext.Response, new { code = 403, msg = "没有权限访问" });
                e.PreventDefault = true;
                return;
            }

            #endregion

            jc["site"] = site;
        }
Beispiel #6
0
        object list_with_permission(string parentId)
        {
            var site = (Site)jc["site"];

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //如果没有站点的管理权限
            if (relation == null)
            {
                return new { code = 403, msg = "没有权限访问" }
            }
            ;

            #endregion

            WebQuery qc = new WebQuery();
            qc.Id = "category.list.permission";
            qc.LoadCondidtion();
            qc.NoPaging();

            #region 加载参数

            qc["parentId"] = string.IsNullOrWhiteSpace(parentId) ? string.Empty : parentId;

            qc["site"]   = site.Id;
            qc["userId"] = jc.UserName;

            #endregion

            var dt = CategoryUsers.GetDataTable(qc);

            var data = new ArrayList();
            foreach (DataRow item in dt.Rows)
            {
                data.Add(new
                {
                    id       = item["id"].ToString(),
                    name     = item["title"].ToString(),
                    isParent = item["hasChildren"].ToBoolean()
                });
            }

            return(data);
        }
Beispiel #7
0
        object delete(string id)
        {
            var site = (Site)jc["site"];

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //如果没有站点的管理权限
            if (relation == null || relation.PermissionLevel != PermissionLevel.ADMIN)
            {
                return new { code = 403, msg = "没有权限访问" }
            }
            ;

            #endregion

            using (ILinqContext <Category> cx = Category.CreateContext())
            {
                var category = (from q in cx
                                where q.Id == id && q.SiteId == site.Id
                                select q).FirstOrDefault();

                if (category == null)
                {
                    return new { code = -1, msg = "指定的栏目不存在,删除失败" }
                }
                ;

                if (Category.Where("ParentId = {0}", category.Id).Where("SiteId = {0}", site.Id).Count() > 0)
                {
                    return new { code = -2, msg = "指定的栏目下存在子栏目,不能删除" }
                }
                ;

                cx.Remove(category);
                cx.SubmitChanges();

                //更新父级是否有子集
                Category.Where("Id = {0}", category.ParentId).Set("HasChildren", Category.Where("ParentId = {0}", category.ParentId).Count() > 0).Update();
            }

            return(new { code = 1, msg = "删除成功" });
        }
Beispiel #8
0
        object add_exist_user(string userId, string permission)
        {
            var user = User.Get(userId);

            if (user == null)
            {
                return new { code = -1, msg = "指定的用户不存在" }
            }
            ;

            var site = (Site)jc["site"];

            using (ILinqContext <SiteUsers> cx = SiteUsers.CreateContext())
            {
                var relation = (from q in cx
                                where q.UserId == user.Id && q.SiteId == site.Id
                                select q).FirstOrDefault();

                if (relation != null)
                {
                    return new { code = -2, msg = "指定的用户在站点下已经存在" }
                }
                ;

                relation = new SiteUsers();

                relation.Id          = StringUtil.UniqueId();
                relation.SiteId      = site.Id;
                relation.DateCreated = DateTime.Now;
                relation.UserId      = user.Id;

                cx.Add(relation, true);

                relation.PermissionLevel = StringEnum <PermissionLevel> .SafeParse(permission);

                cx.SubmitChanges();
            }

            return(new { code = 1, msg = "用户添加成功" });
        }
Beispiel #9
0
        object detail(string userId)
        {
            var site = (Site)jc["site"];

            var relation = (from q in SiteUsers.CreateContext()
                            where q.SiteId == site.Id && q.UserId == userId
                            select q).FirstOrDefault();

            if (relation == null)
            {
                return new { code = -1, msg = "指定的用户在该站点下不存在" }
            }
            ;

            var user = User.Get(relation.UserId);

            if (user == null)
            {
                return new { code = -2, msg = "指定的用户不存在" }
            }
            ;

            return(new
            {
                code = 1,
                data = new
                {
                    id = user.Id,
                    user_name = user.UserName,
                    display_name = user.DisplayName,
                    mobile = user.Mobile,
                    email = user.Email,
                    permission = (int)relation.PermissionLevel
                }
            });
        }
Beispiel #10
0
        object save(string id, string title, string url, string parentId, int sortOrder, bool needLogin2Read, bool showInMenu)
        {
            #region 校验参数

            if (string.IsNullOrWhiteSpace(title))
            {
                return new { code = -1, msg = "栏目名称不能为空" }
            }
            ;

            #region 校验父级栏目是否存在

            Category parent = null;

            if (!string.IsNullOrWhiteSpace(parentId))
            {
                parent = Category.Get(parentId);

                if (parent == null)
                {
                    return new { code = -2, msg = "指定的父级栏目不存在" }
                }
                ;
            }

            #endregion

            title = title.Trim();

            if (string.IsNullOrWhiteSpace(url))
            {
                url = Kiss.Utils.Pinyin.GetInitials(title);
            }

            if (title.Length > 50)
            {
                return new { code = -3, msg = "栏目的标题长度不能大于50个字符" }
            }
            ;
            if (url.Length > 20)
            {
                return new { code = -4, msg = "栏目的URL长度不能大于50个字符" }
            }
            ;

            var site = (Site)jc["site"];

            #region 校验用户对站点的权限

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            //如果没有站点的管理权限
            if (relation == null || relation.PermissionLevel != PermissionLevel.ADMIN)
            {
                return new { code = 403, msg = "没有权限访问" }
            }
            ;

            #endregion

            #endregion

            using (ILinqContext <Category> cx = Category.CreateContext())
                using (ILinqContext <Category> cx_children = Category.CreateContext())
                {
                    var category = (from q in cx
                                    where q.Id == id && q.SiteId == site.Id
                                    select q).FirstOrDefault();

                    if (category == null)
                    {
                        if (Category.Where("Title = {0}", title).Where("SiteId = {0}", site.Id).Where("ParentId = {0}", (parent == null ? string.Empty : parent.Id)).Count() != 0)
                        {
                            return new { code = -5, msg = "已经存在相同的栏目名称,请更换其他栏目名称" }
                        }
                        ;
                        if (Category.Where("Url = {0}", url).Where("SiteId = {0}", site.Id).Where("ParentId = {0}", (parent == null ? string.Empty : parent.Id)).Count() != 0)
                        {
                            return new { code = -6, msg = "已经存在相同的栏目URL,请更换其他栏目URL" }
                        }
                        ;
                    }
                    else
                    {
                        if (category.Title != title && Category.Where("Title = {0}", title).Where("SiteId = {0}", site.Id).Where("ParentId = {0}", (parent == null ? string.Empty : parent.Id)).Count() != 0)
                        {
                            return new { code = -5, msg = "已经存在相同的栏目名称,请更换其他栏目名称" }
                        }
                        ;
                        if (category.Url != url && Category.Where("Url = {0}", url).Where("SiteId = {0}", site.Id).Where("ParentId = {0}", (parent == null ? string.Empty : parent.Id)).Count() != 0)
                        {
                            return new { code = -6, msg = "已经存在相同的栏目URL,请更换其他栏目URL" }
                        }
                        ;
                    }

                    if (category == null)
                    {
                        category = new Category();

                        category.Id          = StringUtil.UniqueId();
                        category.DateCreated = DateTime.Now;
                        category.UserId      = jc.UserName;
                        category.SiteId      = site.Id;

                        cx.Add(category, true);
                    }

                    category.Title          = title;
                    category.Url            = url;
                    category.ParentId       = parent == null ? string.Empty : parent.Id;
                    category.SortOrder      = sortOrder;
                    category.NeedLogin2Read = needLogin2Read;
                    category.ShowInMenu     = showInMenu;

                    #region 子集栏目信息变更

                    category.NodePath = parent == null ? category.Id : string.Format("{0}/{1}", parent.NodePath, category.Id);

                    var children = (from q in cx_children
                                    where q.NodePath.StartsWith(string.Format("{0}/", category.NodePath))
                                    select q).ToList();

                    foreach (var item in children)
                    {
                        item.NodePath = string.Format("{0}/{1}", category.NodePath, item.Id);
                    }

                    category.HasChildren = children.Count > 0;

                    #endregion

                    cx.SubmitChanges();
                    cx_children.SubmitChanges(true);

                    //将父级栏目更新为有子集
                    if (parent != null)
                    {
                        Category.Where("Id = {0}", parent.Id).Set("HasChildren", 1).Update();
                    }
                }

            return(new { code = 1, msg = "保存成功" });
        }
Beispiel #11
0
        object save(string userId, string userName, string displayName, string mobile, string email, string permission)
        {
            #region 校验数据

            var site = (Site)jc["site"];

            if (string.IsNullOrWhiteSpace(userName))
            {
                return new { code = -1, msg = "用户名不能为空" }
            }
            ;
            if (string.IsNullOrWhiteSpace(displayName))
            {
                return new { code = -2, msg = "显示名称不能为空" }
            }
            ;

            userName    = userName.Trim();
            displayName = displayName.Trim();
            mobile      = string.IsNullOrWhiteSpace(mobile) ? string.Empty : mobile.Trim();
            email       = string.IsNullOrWhiteSpace(email) ? string.Empty : email.Trim();

            if (userName.Length > 50)
            {
                return new { code = -3, msg = "用户名字符不能超过50" }
            }
            ;
            if (displayName.Length > 50)
            {
                return new { code = -4, msg = "显示名字符符不能超过50" }
            }
            ;

            if (!Regex.IsMatch(userName, "^[a-zA-Z0-9_]+$"))
            {
                return new { code = -5, msg = "用户名只能是 英文/数字/下划线 组成" }
            }
            ;

            #endregion

            using (ILinqContext <User> cx = User.CreateContext())
                using (ILinqContext <SiteUsers> cx_relation = SiteUsers.CreateContext())
                {
                    #region 构造用户信息

                    User user = User.Get(cx, userId);

                    if (user == null)
                    {
                        if (User.Where("UserName = {0}", userName).Count() > 0)
                        {
                            return new { code = -6, msg = "指定的用户名已经存在,请更换其他用户名" }
                        }
                        ;

                        user = new User();

                        user.Id            = StringUtil.UniqueId();
                        user.OrgId         = "org";
                        user.DateCreate    = DateTime.Now;
                        user.IsValid       = true;
                        user.DateLastVisit = DateTime.Now;

                        user.UserName = userName;

                        //update password
                        user.UpdatePassword("111111");

                        DictSchema schema = DictSchema.GetByName("users", "config");

                        if (schema != null && schema["first_login_resetpwd"] != null && schema["first_login_resetpwd"].ToBoolean())
                        {
                            user["needmodifyPwd"] = true.ToString();
                        }

                        cx.Add(user, true);
                    }

                    user.DisplayName = displayName;
                    user.Mobile      = mobile;
                    user.Email       = email;

                    #endregion

                    #region 构造站点用户关系数据

                    var relation = (from q in cx_relation
                                    where q.SiteId == site.Id && q.UserId == user.Id
                                    select q).FirstOrDefault();

                    if (relation == null)
                    {
                        relation = new SiteUsers();

                        relation.Id          = StringUtil.UniqueId();
                        relation.SiteId      = site.Id;
                        relation.DateCreated = DateTime.Now;
                        relation.UserId      = user.Id;

                        cx_relation.Add(relation, true);
                    }

                    relation.PermissionLevel = StringEnum <PermissionLevel> .SafeParse(permission);

                    #endregion

                    cx.SubmitChanges();
                    cx_relation.SubmitChanges();
                }

            return(new { code = 1, msg = "用户添加成功" });
        }
Beispiel #12
0
        object save(string id, string title, string domain, string keyWords, string description, string theme, int sortOrder, int needAuditPost)
        {
            #region 校验参数 & 校验参数的长度

            if (string.IsNullOrWhiteSpace(title))
            {
                return new { code = -1, msg = "站点名称不能为空" }
            }
            ;
            if (string.IsNullOrWhiteSpace(domain))
            {
                return new { code = -2, msg = "站点域名不能为空" }
            }
            ;

            Regex regex = new Regex(@"^[\w\.]+$");

            if (!regex.IsMatch(domain))
            {
                return new { code = -3, msg = "站点域名支持大小写英文以及点号,下划线" }
            }
            ;

            title       = title.Trim();
            domain      = domain.Trim();
            keyWords    = string.IsNullOrWhiteSpace(keyWords) ? string.Empty : keyWords.Trim();
            description = string.IsNullOrWhiteSpace(description) ? string.Empty : description.Trim();
            theme       = string.IsNullOrEmpty(theme) ? "default" : theme.Trim();

            if (title.Length > 100)
            {
                return new { code = -4, msg = "站点标题不能超过100个字符" }
            }
            ;
            if (domain.Length > 100)
            {
                return new { code = -5, msg = "站点域名不能超过100个字符" }
            }
            ;
            if (keyWords.Length > 500)
            {
                return new { code = -6, msg = "站点关键字不能超过500个字符" }
            }
            ;
            if (description.Length > 1000)
            {
                return new { code = -7, msg = "站点描述不能超过1000个字符" }
            }
            ;
            if (theme.Length > 20)
            {
                return new { code = -8, msg = "站点的主题名不能超过20个字符" }
            }
            ;

            #endregion

            #region 校验LOGO文件

            string logo = string.Empty;

            try
            {
                if (jc.Context.Request.Files.Count > 0)
                {
                    var file = jc.Context.Request.Files["logo"];

                    var extension = Path.GetExtension(file.FileName);
                    if (string.IsNullOrEmpty(extension))
                    {
                        return new { code = -9, msg = "LOGO文件只能是 JPG、GIF、PNG 图片文件" }
                    }
                    ;

                    extension = extension.Substring(1).ToLowerInvariant();

                    if (extension != "jpg" && extension != "gif" && extension != "png")
                    {
                        return new { code = -9, msg = "LOGO文件只能是 JPG、GIF、PNG 图片文件" }
                    }
                    ;
                    if (file.InputStream.Length > 1024 * 1024)
                    {
                        return new { code = -10, msg = "LOGO文件的大小不能超过 1MB" }
                    }
                    ;

                    logo = Convert.ToBase64String(file.InputStream.ToBytes());

                    //存储为 BASE64 格式的
                    logo = string.Format("data:image/{0};base64,{1}", extension, logo);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ExceptionUtil.WriteException(ex));

                return(new { code = -11, msg = "LOGO 存储失败,请联系管理员" });
            }

            #endregion

            #region 校验ICO文件

            string ico = string.Empty;

            try
            {
                if (jc.Context.Request.Files.Count > 0)
                {
                    var file = jc.Context.Request.Files["ico"];

                    var extension = Path.GetExtension(file.FileName);
                    if (string.IsNullOrEmpty(extension))
                    {
                        return new { code = -12, msg = "ICO文件只能是 ICO 图片文件" }
                    }
                    ;

                    extension = extension.Substring(1).ToLowerInvariant();

                    if (extension != "ico")
                    {
                        return new { code = -12, msg = "ICO文件只能是 ICO 图片文件" }
                    }
                    ;
                    if (file.InputStream.Length > 1024 * 1024)
                    {
                        return new { code = -13, msg = "ICO文件的大小不能超过 1MB" }
                    }
                    ;

                    ico = Convert.ToBase64String(file.InputStream.ToBytes());

                    //存储为 BASE64 格式的
                    ico = string.Format("data:image/x-icon;base64,{1}", extension, ico);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ExceptionUtil.WriteException(ex));

                return(new { code = -14, msg = "ICO 图标存储失败,请联系管理员" });
            }

            #endregion

            using (ILinqContext <Site> cx = Site.CreateContext())
                using (ILinqContext <SiteUsers> cx_relation = SiteUsers.CreateContext())
                {
                    var site = Site.Get(cx, id);

                    #region 校验站点数据是否存在相同的

                    if (site == null)
                    {
                        if (Site.Where("Title = {0}", title).Count() != 0)
                        {
                            return new { code = -15, msg = "已经存在相同的站点名称,请更换其他站点名称" }
                        }
                        ;

                        if (Site.Where("Domain = {0}", domain).Count() != 0)
                        {
                            return new { code = -16, msg = "已经存在相同的站点域名,请更换其他站点名称" }
                        }
                        ;
                    }
                    else
                    {
                        if (site.Title != title && Site.Where("Title = {0}", title).Count() != 0)
                        {
                            return new { code = -15, msg = "已经存在相同的站点名称,请更换其他站点名称" }
                        }
                        ;
                        if (site.Domain != domain && Site.Where("Domain = {0}", domain).Count() != 0)
                        {
                            return new { code = -16, msg = "已经存在相同的站点域名,请更换其他站点名称" }
                        }
                        ;
                    }

                    #endregion

                    if (site == null)
                    {
                        site = new Site();

                        site.Id          = StringUtil.UniqueId();
                        site.DateCreated = DateTime.Now;
                        site.UserId      = jc.UserName;

                        cx.Add(site, true);

                        #region 将当前用户加入该站点

                        var relation = new SiteUsers();

                        relation.Id              = StringUtil.UniqueId();
                        relation.DateCreated     = DateTime.Now;
                        relation.SiteId          = site.Id;
                        relation.UserId          = jc.UserName;
                        relation.PermissionLevel = PermissionLevel.ADMIN;

                        cx_relation.Add(relation, true);

                        #endregion
                    }

                    site.Title         = title;
                    site.Domain        = domain;
                    site.KeyWords      = keyWords;
                    site.Description   = description;
                    site.Theme         = theme;
                    site.SortOrder     = sortOrder;
                    site.Logo          = logo;
                    site.ICO           = ico;
                    site.NeedAuditPost = needAuditPost.ToBoolean();

                    cx.SubmitChanges();
                    cx_relation.SubmitChanges();
                }

            return(new { code = 1, msg = "保存成功" });
        }
Beispiel #13
0
        /// <summary>
        /// 获取图片,文件,视频上传配置信息
        /// </summary>
        /// <remarks>请求方式:POST</remarks>
        /// <param name="siteId">站点ID</param>
        /// <returns>
        /// {
        ///     code = 1,       //-1:参数不正确,-2:指定的站点不存在,-3:没有权限访问该地址
        ///     image =
        ///     {
        ///         imageActionName = ""                //图片上传地址
        ///         imageAllowFiles = [],               //允许上传的图片格式
        ///         imageMaxSize = 0,                   //最大支持上传的图片大小
        ///         imageCompressBorder = 0,
        ///         imageCompressEnable = false,        //是否压缩图片
        ///         imageInsertAlign = "none",          //插入图片时的对齐方式
        ///         imageUrlPrefix = ""                 //图片地址的前缀
        ///     },
        ///     file =
        ///     {
        ///         fileActionName = ""                 //文件上传地址
        ///         fileMaxSize = 0,                    //最大支持上传的文件大小
        ///         fileAllowFiles = []                 //允许上传的附件格式
        ///     },
        ///     video =
        ///     {
        ///         videoActionName = ""                 //视频上传地址
        ///         videoMaxSize = 0,                    //最大支持上传的视频大小
        ///         videoAllowFiles = []                 //允许上传的视频格式
        ///     }
        /// }
        /// </returns>
        /// leixu
        /// 2016年10月13日16:23:59
        object get(string siteId)
        {
            if (string.IsNullOrEmpty(siteId))
            {
                return new { code = -1, msg = "参数不正确" }
            }
            ;

            var site = Site.Get(siteId);

            if (site == null)
            {
                return new { code = -2, msg = "指定的站点不存在" }
            }
            ;

            var relation = (from q in SiteUsers.CreateContext()
                            where q.UserId == jc.UserName && q.SiteId == site.Id
                            select q).FirstOrDefault();

            if (relation == null)
            {
                return new { code = -3, msg = "没有权限访问该地址" }
            }
            ;

            var host = jc.Context.Request.Url.Authority;

            //支援 NGINX 反向代理时 配置的外网地址
            if (!string.IsNullOrEmpty(jc.Context.Request.Headers["ORI_HOST"]))
            {
                host = jc.Context.Request.Headers["ORI_HOST"];
            }

            #region 构造允许的扩展名

            var image_exts = new List <string>();
            foreach (var item in Config.Instance.IMAGE_EXTS)
            {
                image_exts.Add(string.Format(".{0}", item.ToLowerInvariant()));
            }

            var file_exts = new List <string>();
            foreach (var item in Config.Instance.FILE_EXTS)
            {
                file_exts.Add(string.Format(".{0}", item.ToLowerInvariant()));
            }

            var video_exts = new List <string>();
            foreach (var item in Config.Instance.VIDEO_EXTS)
            {
                video_exts.Add(string.Format(".{0}", item.ToLowerInvariant()));
            }

            #endregion

            return(new
            {
                code = 1,
                image = new
                {
                    imageActionName = string.Format("{0}/attachment/upload_image?siteId={1}", string.Format("{0}://{1}", jc.Context.Request.Url.Scheme, host), site.Id),
                    imageAllowFiles = image_exts,
                    imageMaxSize = Config.Instance.IMAGE_MAX_SIZE,
                    imageCompressBorder = 1600,
                    imageCompressEnable = false,
                    imageInsertAlign = "none",
                    imageUrlPrefix = string.Empty
                },
                file = new
                {
                    fileActionName = string.Format("{0}/attachment/upload_file?siteId={1}", string.Format("{0}://{1}", jc.Context.Request.Url.Scheme, host), site.Id),
                    fileMaxSize = Config.Instance.FILE_MAX_SIZE,
                    fileAllowFiles = file_exts
                },
                video = new
                {
                    videoActionName = string.Format("{0}/attachment/upload_video?siteId={1}", string.Format("{0}://{1}", jc.Context.Request.Url.Scheme, host), site.Id),
                    videoMaxSize = Config.Instance.VIDEO_MAX_SIZE,
                    videoAllowFiles = video_exts
                }
            });
        }
    }
}