示例#1
0
        public Task Login(Rbac_User user, bool persistent)
        {
            this.user = user;

            var userName = user.LoginName ?? user.Mobile;
            var authId   = user.Rbac_Auths.FirstOrDefault()?.AuthId ?? "none";
            var ticket   = Membership.AuthenticationTicket(user.HashId, userName, authId, persistent);

            logger.LogDebug($"Login with the user \"{user.Id}:{userName}\"");
            return(Context.SignInAsync(ticket.AuthenticationScheme, ticket.Principal, ticket.Properties));
        }
示例#2
0
 public void Logout()
 {
     user = userService.QueryByUserName("guest", "none");
 }
示例#3
0
        public IActionResult PostUser([FromBody] JObject data)
        {
            CheckDataSourceParameter();

            var valid     = SqlMap.Params.GetValue("validmobile", false);
            var mobile    = ValidMobile(data, valid);
            var loginName = data.GetValue <string>("loginname");

            if (loginName.HasValue() && userService.GetByLoginName(loginName) != null)
            {
                throw new AceException("用户名 [" + loginName + "] 已经使用");
            }

            var user = new Rbac_User();

            user.InitializeId();
            user.DCreate   = DateTime.Now;
            user.Enabled   = data.GetValue("enable", 1) == 1;
            user.UserType  = (UserType)data.GetValue <int>("usertype", 0);
            user.LoginName = loginName;
            user.UserName  = data.GetValue <string>("username");
            user.NickName  = data.GetValue("nickname", mobile);
            user.Password  = CryptoHelper.ComputeMD5(user.HashId, data["password"].Value <string>());
            user.Photo     = data.GetValue <string>("photo");
            user.Mobile    = mobile;
            user.Mail      = data.GetValue <string>("mail");
            user.Remark    = data.GetValue <string>("remark");
            user.Creator   = data.GetValue("creator", SqlMap.Params.GetValue("creator", AppCtx.AC.User.Id.ToString()));
            //user.System = data.GetValue("system", 0) == 1;
            user.RegType   = (RegType)data.GetValue("regtype", 9);
            user.Client_Id = data.GetValue <long?>("clientid");

            AppCtx.Session.BeginTransaction();
            try
            {
                var refcode          = data.GetValue("refcode", "");
                var refname          = data.GetValue("refname", "");
                var checkInsertSql   = SqlMap.Params.GetValue("checkinsertsql", "");
                var checkInsertError = SqlMap.Params.GetValue("checkinserterror", "");
                if (checkInsertSql.HasValue())
                {
                    var result = AppCtx.Session.QueryFirst(checkInsertSql, new
                    {
                        refid = data.GetValue("refid", App.IdWorker.NextId()),
                        refcode,
                        refname
                    });
                    if (result.cnt > 0)
                    {
                        throw new AceException(checkInsertError.FormatWith(refcode, refname));
                    }
                    refcode = result.refcode.ToString();
                }
                else if (checkInsertError.HasValue() && userService.GetByRefCode(refcode) != null)
                {
                    throw new AceException(checkInsertError.FormatWith(refcode, refname));
                }
                user.RefCode = refcode;

                if (App.GetQuery("scale", 0) == 1)
                {
                    var refId = data.GetValue <string>("ref_id");
                    var scale = scaleService.GetByRef(refId);
                    if (scale == null)
                    {
                        scale = new Rbac_Scale();
                        scale.InitializeId();
                        scale.DCreate = DateTime.Now;
                        scale.Name    = data.GetValue("scale_name", user.UserName);
                        if (refId.HasValue())
                        {
                            scale.Ref_Id = refId;
                        }
                        scale.ParentId = AppCtx.AC.User.Scale_Id;
                        scale.Remark   = "由用户 [" + user.LoginName + "] 自动生成";
                        scaleService.Insert(scale);
                    }
                    user.Scale_Id = scale.Id;
                    user.UserType = UserType.Admin;
                }
                else
                {
                    user.Scale_Id = data.GetValue("scale_id", AppCtx.AC.GetDefaultScaleId());
                }
                userService.Insert(user);

                var roles = SqlMap.Params.GetValue("roles", "");
                if (roles.HasValue())
                {
                    roles.Split <long>().Each(roleId =>
                    {
                        var ua = new Rbac_UA();
                        ua.InitializeId();
                        ua.User_Id = user.Id;
                        ua.Role_Id = roleId;
                        ua.DCreate = DateTime.Now;
                        AppCtx.Session.Insert(ua);
                    });
                }

                AppCtx.Session.Commit();

                if (SqlMap.SqlId != "rbac.user")
                {
                    SqlMapper.CacheManager.Flush(SqlMap.SqlId);
                }
                SqlMapper.CacheManager.Flush("rbac.user");
            }
            catch (Exception ex)
            {
                AppCtx.Session.Rollback();
                throw new AceException(ex.GetMessage());
            }

            return(Ok(null));
        }
示例#4
0
        public IActionResult PutUser([FromBody] JObject data)
        {
            Rbac_User user   = null;
            var       userId = data.GetValue <long>("id", 0);

            if (userId > 0)
            {
                user = userService.Get(userId);
            }
            else if (AppCtx.AC.Logined)
            {
                user = AppCtx.AC.User;
            }
            else
            {
                throw new AceException("未登录不能修改用户信息");
            }

            var loginName = data.GetValue <string>("loginname");

            if (loginName.HasValue())
            {
                var searchUser = userService.GetByLoginName(loginName);
                if (searchUser != null && searchUser.Id != user.Id)
                {
                    throw new AceException("登录名 [" + loginName + "] 已经使用");
                }
                user.LoginName = loginName;
            }

            var mobile = data.GetValue <string>("mobile");

            if (mobile.HasValue())
            {
                var searchUser = userService.GetByMobile(mobile);
                if (searchUser != null && searchUser.Id != user.Id)
                {
                    throw new AceException("该手机号已注册或绑定其他用户");
                }
                user.Mobile = mobile;
            }

            var mail = data.GetValue <string>("mail");

            if (mail.HasValue())
            {
                var searchUser = userService.GetByMail(mail);
                if (searchUser != null && searchUser.Id != user.Id)
                {
                    throw new AceException("该邮箱已注册或绑定其他用户");
                }
                user.Mail = mail;
            }

            var password = data.GetValue <string>("password");

            if (password.HasValue() && !password.EndsWith("==") && password.Length <= 20)
            {
                user.Password = CryptoHelper.ComputeMD5(user.HashId, password);
            }
            if (data["username"] != null)
            {
                user.UserName = data.GetValue <string>("username");
            }
            if (data["nickname"] != null)
            {
                user.NickName = data.GetValue <string>("nickname");
            }
            if (data["photo"] != null)
            {
                user.Photo = data.GetValue <string>("photo");
            }
            if (data["remark"] != null)
            {
                user.Remark = data.GetValue <string>("remark");
            }
            if (data["enable"] != null)
            {
                user.Enabled = data.GetValue("enable", 1) == 1;
            }
            //if (data["system"] != null)
            //{
            //    user.System = data.GetValue("system", 0) == 1;
            //}
            if (data["refcode"] != null)
            {
                user.RefCode = data.GetValue <string>("refcode");
            }
            if (data["province"] != null)
            {
                user.Province = data.GetValue <string>("province");
            }
            if (data["city"] != null)
            {
                user.City = data.GetValue <string>("city");
            }
            if (data["County"] != null)
            {
                user.Country = data.GetValue <string>("County");
            }
            userService.Update(user);

            SqlMapper.CacheManager.Flush("rbac.user");
            return(Ok(null));
        }
示例#5
0
        public void InitializeData(ISession session)
        {
            session.BeginTransaction();

            try
            {
                var rootScale = new Rbac_Scale();
                rootScale.InitializeId();
                rootScale.Name    = "root";
                rootScale.Remark  = "系统顶级,默认请勿删除";
                rootScale.System  = true;
                rootScale.DCreate = DateTime.Now;
                session.Insert(rootScale);

                var adminScale = new Rbac_Scale();
                adminScale.Id       = Membership.Default_ScaleId;
                adminScale.ParentId = rootScale.Id;
                adminScale.Name     = "admin";
                adminScale.Remark   = "管理员级,最高权限层级";
                adminScale.System   = true;
                adminScale.DCreate  = DateTime.Now;
                session.Insert(adminScale);

                var roleAdmin = new Rbac_Role();
                roleAdmin.InitializeId();
                roleAdmin.Name     = "系统管理员";
                roleAdmin.Scale_Id = rootScale.Id;
                roleAdmin.System   = true;
                roleAdmin.DCreate  = DateTime.Now;
                session.Insert(roleAdmin);

                var roleGuest = new Rbac_Role();
                roleGuest.InitializeId();
                roleGuest.Name     = "游客角色";
                roleGuest.Scale_Id = rootScale.Id;
                roleGuest.System   = true;
                roleGuest.DCreate  = DateTime.Now;
                session.Insert(roleGuest);

                var root = new Rbac_User();
                root.InitializeId();
                root.Scale_Id  = rootScale.Id;
                root.LoginName = "root";
                root.UserName  = "******";
                root.NickName  = "管理员";
                root.Password  = CryptoHelper.ComputeMD5(root.HashId, "root&123");
                root.DCreate   = DateTime.Now;
                root.Enabled   = true;
                session.Insert(root);

                var admin = new Rbac_User();
                admin.InitializeId();
                admin.Scale_Id  = adminScale.Id;
                admin.LoginName = "admin";
                admin.UserName  = "******";
                admin.NickName  = "管理员";
                admin.UserType  = UserType.Admin;
                admin.Creator   = root.Id.ToString();
                admin.Password  = CryptoHelper.ComputeMD5(admin.HashId, "admin");
                admin.DCreate   = DateTime.Now;
                admin.Enabled   = true;
                session.Insert(admin);

                var guest = new Rbac_User();
                guest.InitializeId();
                guest.Scale_Id  = rootScale.Id;
                guest.LoginName = "guest";
                guest.UserName  = "******";
                guest.NickName  = "游客";
                guest.Creator   = root.Id.ToString();
                guest.Password  = CryptoHelper.ComputeMD5(guest.HashId, "guest");
                guest.DCreate   = DateTime.Now;
                guest.Enabled   = true;
                session.Insert(guest);

                var ua = new Rbac_UA();
                ua.InitializeId();
                ua.Role_Id = roleAdmin.Id;
                ua.User_Id = admin.Id;
                ua.DCreate = DateTime.Now;
                session.Insert(ua);

                ua = new Rbac_UA();
                ua.InitializeId();
                ua.Role_Id = roleGuest.Id;
                ua.User_Id = guest.Id;
                ua.DCreate = DateTime.Now;
                session.Insert(ua);

                session.Commit();
            }
            catch
            {
                session.Rollback();
                throw;
            }
        }