private void CreateOrUpdateMenu(IPersistBroker broker, classification data)
        {
            var menu = broker.Retrieve <sys_menu>("SELECT * FROM sys_menu WHERE router = @code", new Dictionary <string, object>()
            {
                { "@code", $"blogs/{data.code}" }
            });

            if (menu != null)
            {
                menu.menu_Index = data.index;
                menu.name       = data.name;
                broker.Update(menu);
            }
            else
            {
                menu = new sys_menu()
                {
                    Id            = Guid.NewGuid().ToString(),
                    name          = data.name,
                    parentid      = "8201EFED-76E2-4CD1-A522-4803D52D4D92",
                    parentIdName  = "博客管理",
                    router        = $"blogs/{data.code}",
                    menu_Index    = data.index,
                    stateCode     = 1,
                    stateCodeName = "启用"
                };
                broker.Create(menu);
            }
        }
        /// <summary>
        /// 权限创建
        /// </summary>
        /// <param name="broker"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static string FilteredCreate(this IPersistBroker broker, BaseEntity entity)
        {
            var sysEntity = EntityCache.GetEntity(entity.EntityName);

            AssertUtil.CheckBoolean <InvalidCredentialException>(!AuthAccess.CheckWriteAccess(sysEntity.Id), $"用户没有实体[{sysEntity.name}]的创建权限", "451FC4BA-46B2-4838-B8D0-69617DFCAF39");
            return(broker.Create(entity));
        }
Esempio n. 3
0
        /// <summary>
        /// 获取配置值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static object GetValue <T>() where T : ISysConfig, new()
        {
            var sql  = @"
select * from sys_config where code = @code;
";
            var t    = new T();
            var data = broker.Retrieve <sys_config>(sql, new Dictionary <string, object>()
            {
                { "@code", t.Code }
            });

            // 数据库里不存在该配置,则创建一条配置记录
            if (data == null)
            {
                var model = new sys_config()
                {
                    name  = t.Name,
                    code  = t.Code,
                    value = t.DefaultValue?.ToString()
                };
                broker.Create(model);
                return(t.DefaultValue);
            }
            return(data.value);
        }
Esempio n. 4
0
        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public LoginResponse Signup(LoginRequest model)
        {
            AssertUtil.CheckIsNullOrEmpty <SpException>(model.code, "账号不能为空", "");
            AssertUtil.CheckIsNullOrEmpty <SpException>(model.password, "密码不能为空", "");

            return(Broker.ExecuteTransaction(() =>
            {
                if (!model.code.Contains("@"))
                {
                    return new LoginResponse(false, "注册失败,请使用邮箱作为账号");
                }

                var vertification = new MailVertificationService(Broker).GetDataByMailAdress(model.code);
                if (vertification != null)
                {
                    return new LoginResponse(false, "激活邮件已发送,请前往邮件激活账号,请勿重复注册", LoginMesageLevel.Warning);
                }

                var id = Guid.NewGuid().ToString();
                model.password = RSAUtil.Decrypt(model.password, model.publicKey);
                var data = new mail_vertification()
                {
                    Id = id,
                    name = "账号激活邮件",
                    content = $@"你好,<br/><br/>
请在两小时内点击该<a href=""{ SystemConfig.Config.Protocol }://{SystemConfig.Config.Domain}/api/MailVertification/ActivateUser?id={id}"">链接</a>激活,失效请重新登录注册
",
                    expire_time = DateTime.Now.AddHours(2),
                    is_active = false,
                    login_request = JsonConvert.SerializeObject(model),
                    mail_address = model.code,
                    mail_type = MailType.Activation.ToString()
                };
                Broker.Create(data);

                // 返回登录结果、用户信息、用户验证票据信息
                return new LoginResponse()
                {
                    result = false,
                    message = $"已向{data.mail_address}发送激活邮件,请在两个小时内激活",
                    level = LoginMesageLevel.Warning.ToString()
                };
            }));
        }
Esempio n. 5
0
        /// <summary>
        /// 获取角色
        /// </summary>
        /// <param name="roleName"></param>
        /// <returns></returns>
        public sys_role GetSysRole()
        {
            var key = $"{ROLE_PREFIX}_{RoleName}";

            return(MemoryCacheUtil.GetOrAddCacheItem(key, () =>
            {
                var role = Broker.Retrieve <sys_role>("select * from sys_role where name = @name", new Dictionary <string, object>()
                {
                    { "@name", Role.GetDescription() }
                });
                if (role == null)
                {
                    role = new sys_role()
                    {
                        Id = Guid.NewGuid().ToString(),
                        name = Role.GetDescription(),
                        is_basic = true
                    };
                    Broker.Create(role);
                }
                return role;
            }, DateTime.Now.AddHours(12)));
        }