/// <summary>
        /// 获取角色权限关系
        /// </summary>
        /// <param name="organizationId"></param>
        /// <param name="roleId"></param>
        /// <param name="rightType"></param>
        /// <returns></returns>
        private List <GroupPermissionRelationDAO> GetGroupPermisionRelations(string organizationId, string groupId, string rightType)
        {
            List <GroupPermissionRelationDAO> result = new List <GroupPermissionRelationDAO>();

            var permissions = _authorRepository.GetPermisions();

            if (permissions == null || permissions.Count == 0)
            {
                return(result);
            }

            foreach (var permission in permissions)
            {
                var relations = new GroupPermissionRelationDAO()
                {
                    MItemID       = GuidUtility.GetGuid(),
                    MOrgID        = organizationId,
                    MGroupID      = groupId,
                    MPermissionID = permission.MItemID,
                    MRightType    = rightType,
                };

                result.Add(relations);
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// 新增账号
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public OperationResult InsertUser(UserDTO user)
        {
            OperationResult result = new OperationResult();

            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            result = Validate <UserDTO>(user);

            if (!result.Success)
            {
                return(result);
            }

            user.Id = GuidUtility.GetGuid();

            int effRow = _userRepository.InsertUser(user.Convert());

            result.Success = effRow > 0;

            if (result.Success)
            {
                SendActivateMail(user);
            }


            result.Id = result.Success ? user.Id : null;

            return(result);
        }
Example #3
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public OperationResult Login(string email, string password)
        {
            OperationResult result = new OperationResult();

            var userModel = GetUser(email, password);

            if (userModel == null)
            {
                return(result);
            }

            TokenDTO tokenModel = new TokenDTO()
            {
                UserId         = userModel.Id,
                UserName       = userModel.Name,
                Token          = GuidUtility.GetGuid(),
                ExpireDateTime = DateTime.Now.AddHours(1)
            };

            CacheModel tokenCache = new CacheModel()
            {
                CacheType = CacheType.KeyValue,
                Key       = tokenModel.Token,
                Data      = tokenModel,
            };


            result.Success = _cache.Add(tokenCache);

            result.Data = result.Success ? tokenModel : null;

            return(result);
        }
Example #4
0
        /// <summary>
        /// 注册新账号
        /// </summary>
        /// <returns></returns>
        public User CreateUser(int type, EmailTemplate emailTemplate)
        {
            Id     = GuidUtility.GetGuid();
            Status = 0;
            //基础数据
            Create();

            //设置激活连接信息
            CreateUserActiveEmail(type, emailTemplate);

            return(this);
        }
Example #5
0
 /// <summary>
 /// 创建激活邮件内容
 /// </summary>
 /// <param name="type">类型 1 注册 2 邀请注册</param>
 /// <param name="emailTemplate"></param>
 /// <returns></returns>
 public void CreateUserActiveEmail(int type, EmailTemplate emailTemplate)
 {
     this.UserActiveInfo = new UserActiveInfo()
     {
         Id            = GuidUtility.GetGuid(),
         FirstName     = this.FirstName,
         LastName      = this.LastName,
         Email         = EmailAddress,
         LinkType      = type,
         Phone         = Phone,
         EmailTemplate = emailTemplate
     };
 }
Example #6
0
        public virtual void Create()
        {
            if (TokenContext == null)
            {
                throw new TokenContextNullException("无法获取登录信息");
            }

            Id = GuidUtility.GetGuid();

            CreatorID  = TokenContext.GetUserId();
            CreateDate = DateTime.Now;
            ModifierID = CreatorID;
            ModifyDate = CreateDate;
            IsActive   = true;
            IsDelete   = false;
        }
        /// <summary>
        /// 设置组织的数据库
        /// </summary>
        /// <param name="organizationId"></param>
        public static void SetOrganizationStorageRelation(string organizationId)
        {
            var storageMaxOrganiztonCount = ConfigurationManager.AppSetting("StorageMaxOrganiztonCount");

            if (string.IsNullOrWhiteSpace(storageMaxOrganiztonCount))
            {
                throw new Exception("没有找到配置项StorageMaxOrganiztonCount");
            }

            int maxConfiguration = 0;

            if (!int.TryParse(storageMaxOrganiztonCount, out maxConfiguration))
            {
                throw new Exception("配置项StorageMaxOrganiztonCount只能是整形数字");
            }

            var storages = GetStorages();

            if (storages == null || storages.Count == 0)
            {
                throw new Exception("没有找到任何的storeage");
            }

            var storage = storages.FirstOrDefault(x => x.MOrgCount < maxConfiguration);

            if (storage == null)
            {
                throw new Exception("没有找到合适的数据库,请确认数据库是否已满");
            }

            OrganizaitonStoreRelationDAO organizaitonStore = new OrganizaitonStoreRelationDAO()
            {
                MItemID    = GuidUtility.GetGuid(),
                MOrgID     = organizationId,
                MStorageID = storage.MItemID,
                MIsActive  = true,
                MIsDelete  = false
            };

            string connectionString = ConfigurationManager.AppSetting("ConnectionString");

            IORM _orm = new SugarORM(connectionString);

            var client = _orm.GetSqlClient <SqlSugarClient>();

            client.Insertable <OrganizaitonStoreRelationDAO>(organizaitonStore).ExecuteCommand();
        }
        /// <summary>
        /// 创建一个组织
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        public OrganizationDTO CreateOrganization(OrganizationDTO organization)
        {
            OrganizationDAO dao = organization.Convert();

            dao.MItemID   = GuidUtility.GetGuid();
            dao.MIsActive = false;
            dao.MIsDelete = false;

            OrganizationAttributeDAO attributeDao = new OrganizationAttributeDAO();

            attributeDao.MItemID         = GuidUtility.GetGuid();
            attributeDao.MOrgID          = dao.MItemID;
            attributeDao.MConversionDate = DateTime.Now;
            attributeDao.MExpiredDate    = DateTime.Now.AddDays(30);
            attributeDao.MRegProgress    = (int)WizardStepType.Created;
            attributeDao.MIsActive       = true;

            OrganizationUserRelationDAO organizationUserRelation = new OrganizationUserRelationDAO();

            organizationUserRelation.MItemID   = GuidUtility.GetGuid();
            organizationUserRelation.MOrgID    = dao.MItemID;
            organizationUserRelation.MUserID   = GetCurrentUserId();
            organizationUserRelation.MIsActive = true;


            var client = _orm.GetSqlClient <SqlSugarClient>();

            try
            {
                client.BeginTran();

                client.Insertable(dao).ExecuteCommand();
                client.Insertable(attributeDao).ExecuteCommand();
                client.Insertable(organizationUserRelation).ExecuteCommand();
                client.CommitTran();
                organization.Id = dao.MItemID;

                return(organization);
            }
            catch (Exception ex)
            {
                client.RollbackTran();

                throw ex;
            }
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="userDTO"></param>
        /// <returns></returns>
        public OperationResult Login(UserDTO userDTO)
        {
            OperationResult result = new OperationResult();

            if (!string.IsNullOrWhiteSpace(userDTO.EmailAddress) || !string.IsNullOrWhiteSpace(userDTO.Password))
            {
                result.Success = false;
                result.Messages.Add("请填写用户名和密码");
                result.Code = ((int)RequestFailCode.ParametersMissing).ToString();
            }

            var user = _userDomainService.GetUser(userDTO.EmailAddress, userDTO.Password);

            if (user == null)
            {
                result.Success = false;
                result.Messages.Add("用户名或密码不正确");
                result.Code = ((int)RequestFailCode.PasswordError).ToString();
                return(result);
            }

            //如果存在的化,保存到Redis
            var tokenModel = new TokenDTO()
            {
                TokenId        = GuidUtility.GetGuid(),
                UserId         = user.Id,
                ExpiredDate    = DateTime.Now.AddSeconds(3600),
                RefreshTokenId = GuidUtility.GetGuid()
            };

            RedisRepository.SaveUserToken(tokenModel);

            result.Success = true;
            result.Data    = tokenModel;

            return(result);
        }
        /// <summary>
        /// 用户,组织创建权限
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="orgId"></param>
        /// <returns></returns>
        public OperationResult CreateAdminAuthor(string userId, string orgId)
        {
            OperationResult result = new OperationResult();

            //用户对于的角色
            UserRoleRelationDAO userRoleRelation = new UserRoleRelationDAO()
            {
                MItemID = GuidUtility.GetGuid(),
                MUserID = userId,
                MOrgID  = orgId,
                //管理员
                MRoleID = "10000"
            };

            //获取用户组模型
            UserGroupRelationDAO userGroupRelation = new UserGroupRelationDAO()
            {
                MItemID  = GuidUtility.GetGuid(),
                MUserID  = userId,
                MOrgID   = orgId,
                MGroupID = "10000"
            };

            GroupRoleRealtionDAO groupRoleRealtion = new GroupRoleRealtionDAO()
            {
                MGroupID = "10000",
                MRoleID  = "10000",
                MItemID  = GuidUtility.GetGuid(),
            };

            //获取角色,权限关系模型
            List <RolePermisionRelationDAO> rolePermisionRelations = GetRolePermisionRelations(orgId, "10000", "11111");

            //获取角色,权限关系模型
            List <GroupPermissionRelationDAO> groupPermisionRelations = GetGroupPermisionRelations(orgId, "10000", "11111");

            try
            {
                result.Success = _authorRepository.AddAuthor(userGroupRelation, userRoleRelation, rolePermisionRelations, groupPermisionRelations);

                //如果成功,返回一个权限创建成功队列
                if (result.Success)
                {
                    AuthorCreatedEvent @event = new AuthorCreatedEvent()
                    {
                        OrgId = orgId, UserId = userId
                    };
                    _eventBus.PublishAsync <AuthorCreatedEvent>(@event);
                }
                else
                {
                    OrganizationRollbackEvent @event = new OrganizationRollbackEvent()
                    {
                        OrgId = orgId
                    };

                    _eventBus.PublishAsync <OrganizationRollbackEvent>(@event);
                }
            }
            catch (Exception ex)
            {
                //如果创建失败,发送一个组织回滚事件
                OrganizationRollbackEvent @event = new OrganizationRollbackEvent()
                {
                    OrgId = orgId
                };

                _eventBus.PublishAsync <OrganizationRollbackEvent>(@event);
            }

            return(result);
        }
 /// <summary>
 /// 获取一个GUID
 /// </summary>
 /// <returns></returns>
 protected virtual string GetGuid()
 {
     return(GuidUtility.GetGuid());
 }