예제 #1
0
        private void OnUpdateServerSettings(object sender, EventArgs e)
        {
            List <Role>   roles      = new List <Role>(RoleManager.GetAllRoles());
            List <string> rolesAdded = new List <string>();

            foreach (string delete in _RolesView.RolesToDelete)
            {
                RoleManager.DeleteRole(delete);
            }

            foreach (KeyValuePair <string, Role> role in _RolesView.RolesToAdd)
            {
                List <string> permissions = (from rp in _RolesView.RolePermissions
                                             where rp.Key.ToLower() == role.Key.ToLower()
                                             select rp.Value).FirstOrDefault();

                role.Value.AssignedPermissions = permissions != null?permissions.ToArray() : new List <string>().ToArray();

                RoleManager.AddRole(role.Value);
                rolesAdded.Add(role.Key);
            }

            foreach (string role in rolesAdded)
            {
                _RolesView.RolesToAdd.Remove(role);
            }

            foreach (KeyValuePair <string, List <string> > roleEdit in _RolesView.RolePermissions)
            {
                Role role = (from r in roles
                             where r.Name == roleEdit.Key
                             select r).FirstOrDefault();

                if (role != null)
                {
                    List <string> permissions = role.AssignedPermissions.ToList();
                    List <string> deletes     = permissions.Except(roleEdit.Value).ToList();
                    List <string> adds        = roleEdit.Value.Except(permissions).ToList();

                    if (deletes.Count > 0 || adds.Count > 0)
                    {
                        foreach (string delete in deletes)
                        {
                            permissions.Remove(delete);
                        }

                        foreach (string add in adds)
                        {
                            permissions.Add(add);
                        }

                        role.AssignedPermissions = permissions.ToArray();
                        RoleManager.UpdateRole(role);
                    }
                }
            }
        }
예제 #2
0
        private string AddRole(HttpContext context)
        {
            string        strJsonResult = string.Empty;
            string        userAccount   = string.Empty;
            ErrorCodeInfo error         = new ErrorCodeInfo();
            Guid          transactionid = Guid.NewGuid();
            string        funname       = "AddRole";

            try
            {
                do
                {
                    string strAccesstoken = context.Request["accessToken"];
                    //判断AccessToken
                    if (string.IsNullOrEmpty(strAccesstoken))
                    {
                        error.Code    = ErrorCode.TokenEmpty;
                        strJsonResult = JsonHelper.ReturnJson(false, Convert.ToInt32(error.Code), error.Info);
                        LoggerHelper.Info(userAccount, funname, context.Request.RawUrl, Convert.ToString(error.Code), false, transactionid);
                        break;
                    }

                    AdminInfo admin = new AdminInfo();
                    if (!TokenManager.ValidateUserToken(transactionid, strAccesstoken, out admin, out error))
                    {
                        strJsonResult = JsonHelper.ReturnJson(false, Convert.ToInt32(error.Code), error.Info);
                        LoggerHelper.Info(userAccount, funname, context.Request.RawUrl, Convert.ToString(error.Code), false, transactionid);
                        break;
                    }

                    Stream str = context.Request.InputStream;
                    // Find number of bytes in stream.
                    Int32 strLen = Convert.ToInt32(str.Length);
                    // Create a byte array.
                    byte[] strArr = new byte[strLen];
                    // Read stream into byte array.
                    str.Read(strArr, 0, strLen);
                    string body = System.Text.Encoding.UTF8.GetString(strArr);

                    RoleInfo info = JsonConvert.DeserializeObject <RoleInfo>(body);

                    RoleManager manager = new RoleManager(ClientIP);
                    manager.AddRole(transactionid, admin, info, out strJsonResult);
                } while (false);
            }
            catch (Exception ex)
            {
                error.Code = ErrorCode.Exception;
                LoggerHelper.Error("Role.ashx调用接口AddRole异常", context.Request.RawUrl, ex.ToString(), transactionid);
                LoggerHelper.Info(userAccount, funname, context.Request.RawUrl, Convert.ToString(error.Code), false, transactionid);
                strJsonResult = JsonHelper.ReturnJson(false, Convert.ToInt32(error.Code), error.Info);
            }

            return(strJsonResult);
        }
예제 #3
0
 public void AddSystemRole(RoleInfo_Add roleInfo)
 {
     using (var biz = new GameBizAuthBusinessManagement())
     {
         biz.BeginTran();
         using (var roleManager = new RoleManager())
         {
             var role = roleManager.GetRoleById(roleInfo.RoleId);
             if (role != null)
             {
                 throw new ArgumentException("指定编号的角色已经存在 - " + role.RoleId);
             }
             role = new SystemRole
             {
                 RoleId       = roleInfo.RoleId,
                 RoleName     = roleInfo.RoleName,
                 IsAdmin      = roleInfo.IsAdmin,
                 IsInner      = false,
                 RoleType     = roleInfo.RoleType,
                 FunctionList = new List <RoleFunction>(),
             };
             if (!role.IsAdmin)
             {
                 foreach (var item in roleInfo.FunctionList)
                 {
                     var roleFunction = new RoleFunction
                     {
                         Role       = role,
                         FunctionId = item.FunctionId,
                         Function   = roleManager.LoadFunctionById(item.FunctionId),
                         Status     = EnableStatus.Enable,
                         Mode       = item.Mode,
                     };
                     role.FunctionList.Add(roleFunction);
                 }
                 var list = roleManager.QueryFixFunctionList(roleInfo.RoleType);
                 foreach (var item in list)
                 {
                     var roleFunction = new RoleFunction
                     {
                         Role       = role,
                         FunctionId = item.FunctionId,
                         Function   = item,
                         Status     = EnableStatus.Enable,
                         Mode       = "RW",
                     };
                     role.FunctionList.Add(roleFunction);
                 }
             }
             roleManager.AddRole(role);
         }
         biz.CommitTran();
     }
 }
예제 #4
0
        public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            //先得到子操作代码,根据子操作代码,分别进行不同的处理
            SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false);

            Dictionary <byte, object> parameters = response.Parameters;

            parameters.Add((byte)ParameterCode.SubCode, subCode);
            response.OperationCode = request.OperationCode;
            switch (subCode)
            {
            case SubCode.GetRole:
                List <Role> rolelList = roleManager.GetRoleListByUser(peer.LoginUser);
                foreach (var role1 in rolelList)
                {
                    role1.User = null;
                }
                ParameterTool.AddParmeter(parameters, ParameterCode.RoleList, rolelList);
                break;

            case SubCode.AddRole:
                Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);    //request ?? response 互换实验看看 ??request正确
                role.User = peer.LoginUser;
                roleManager.AddRole(role);
                role.User = null;
                ParameterTool.AddParmeter(response.Parameters, ParameterCode.Role, role);
                break;

            case SubCode.SelectRole:
                peer.LoginRole = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                break;

            case SubCode.UpdateRole:
                Role role2 = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role2.User = peer.LoginUser;
                roleManager.UpdateRole(role2);
                role2.User          = null;
                response.ReturnCode = (short)ReturnCode.Success;
                break;

            case SubCode.GetTumoRole:
                User user = ParameterTool.GetParameter <User>(request.Parameters, ParameterCode.User);
                log.Debug("Role63" + user.Username);
                User        user1         = userManager.GetUserByUsernmae(user.Username);
                List <Role> tumoRolelList = roleManager.GetRoleListByUser(user1);
                foreach (var role1 in tumoRolelList)
                {
                    role1.User = null;
                }
                ParameterTool.AddParmeter(parameters, ParameterCode.TumoRoleList, tumoRolelList);
                log.Debug("Role70" + tumoRolelList[0].Name);
                break;
            }
        }
예제 #5
0
        public JsonResult AddRoleFunction(OperationRoleModel model)
        {
            CommonResult r = new CommonResult();

            try
            {
                if (!CheckRights("TJJS100"))
                {
                    return(Json(new { IsSuccess = false, Msg = "您没有添加角色的权限" }));
                }
                var       id       = Guid.NewGuid().ToString();
                AdminRole roleInfo = new AdminRole();
                roleInfo.Name          = PreconditionAssert.IsNotEmptyString(model.RoleName, "角色名不能为空");
                roleInfo.Id            = id;
                roleInfo.Type          = model.RoleType;
                roleInfo.UpdateDate    = DateTime.Now;
                roleInfo.CreationDate  = DateTime.Now;
                roleInfo.CreatorUserId = CurUser.UserId;
                roleInfo.UpdatorUserId = CurUser.UserId;

                if (roleInfo.Type == IdentityManager.RoleType.SuperAdmin)
                {
                    roleInfo.Permissions = PermissionManager.GetAllPermissions()?.Select(p =>
                    {
                        return(new AdminRolePermission()
                        {
                            RoleId = id,
                            PermissionId = p.Id,
                            CreationDate = DateTime.Now
                        });
                    }).ToList();
                }
                else
                {
                    roleInfo.Permissions = model.FunctionIds.Select(p =>
                    {
                        return(new AdminRolePermission()
                        {
                            RoleId = id,
                            PermissionId = p,
                            CreationDate = DateTime.Now
                        });
                    }).ToList();
                }
                RoleManager.AddRole(roleInfo);
                return(Json(r));
            }
            catch (Exception ex)
            {
                logger.Error("AddRoleFunciton", ex);
                return(Json(new { IsSuccess = false, Msg = ex.Message }));
            }
        }
예제 #6
0
        private bool tryPost(ref Model.Role model, out string errMsg)
        {
            errMsg = "";
            bool re = false;

            model.Creater      = this.auth.UserId;
            model.CreatedDate  = DateTime.Now;
            model.Modifier     = this.auth.UserId;
            model.ModifiedDate = DateTime.Now;
            if (RoleManager.AddRole(ref model, out errMsg))
            {
                re = true;
            }
            return(re);
        }
예제 #7
0
        public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            //得到当前操作的子代码,根据不同的操作,进行不同的查询
            SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false);

            Dictionary <byte, object> parameters = response.Parameters;

            parameters.Add((byte)ParameterCode.SubCode, subCode);

            response.OperationCode = request.OperationCode;
            response.Parameters    = parameters;

            switch (subCode)
            {
            case SubCode.AddRole:
                Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role.User = peer.LoginUser;
                manager.AddRole(role);
                role.User = null;
                ParameterTool.AddParameter(parameters, ParameterCode.Role, role);
                break;

            case SubCode.GetRole:
                List <Role> rolelist = manager.GetRoleListByUser(peer.LoginUser);
                foreach (var role1 in rolelist)
                {
                    role1.User = null;
                }
                ParameterTool.AddParameter(parameters, ParameterCode.RoleList, rolelist);

                break;

            case SubCode.SelectRole:
                //将客户端选择的角色发送给服务器
                peer.LoginRole = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                TaidouServer.log.Debug(peer.LoginRole.Name + "----" + peer.LoginRole.ID);
                break;

            case SubCode.UpdateRole:
                Role role2 = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role2.User = peer.LoginUser;
                manager.UpdateRole(role2);
                role2.User = null;

                response.ReturnCode = (short)ReturnCode.Success;
                break;
            }
        }
예제 #8
0
        public override void OnHandlerMessage(Photon.SocketServer.OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            //先得到子操作代码,根据子操作代码,分别进行不同的处理
            SubCode subcode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false);


            Dictionary <byte, object> parameters = response.Parameters;

            parameters.Add((byte)ParameterCode.SubCode, subcode);
            response.OperationCode = request.OperationCode;
            switch (subcode)
            {
            case SubCode.AddRole:
                Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role.User = peer.LoginUser;
                roleManager.AddRole(role);
                role.User = null;
                ParameterTool.AddParameter(response.Parameters, ParameterCode.Role, role);
                break;

            case SubCode.GetRole:
                List <Role> roleList = roleManager.GetRoleListByUser(peer.LoginUser);
                foreach (var role1 in roleList)
                {
                    role1.User = null;
                }
                ParameterTool.AddParameter(parameters, ParameterCode.RoleList, roleList);
                break;

            case SubCode.SelectRole:
                peer.LoginRole = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                break;

            case SubCode.UpdateRole:
                Role role2 = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role2.User = peer.LoginUser;
                roleManager.UpdateRole(role2);
                role2.User          = null;
                response.ReturnCode = (short)ReturnCode.Success;
                break;
            }
        }
예제 #9
0
        private void SetRoles()
        {
            var list = DbFactory.Repository <RoleInfoRepository>().GetList();

            if (list != null && list.Count > 0)
            {
                var roles = new List <RoleInfo>();
                roles.AddRange(list.Select(q => new RoleInfo(
                                               q.RoleID,
                                               q.RoleCode,
                                               q.RoleName
                                               )));
                foreach (var item in roles)
                {
                    RoleManager.AddRole(item);
                }
            }

            RoleManager.SetUserRole(RoleInfo.LoginedRole);
            RoleManager.SetGuestRole(RoleInfo.UnLoginRole);
        }
예제 #10
0
        /// <summary>
        /// Save selected role
        /// </summary>
        /// <param name="pRole"></param>
        /// <returns>A struct contains, if necessary, errors occurs</returns>
        public RoleErrors SaveRole(Role pRole)
        {
            RoleErrors roleErrors = new RoleErrors();

            if (string.IsNullOrEmpty(pRole.RoleName))
            {
                roleErrors.FindError     = true;
                roleErrors.RoleNameError = true;
                //roleErrors.ResultMessage += "\n - " + MultiLanguageStrings.GetString(Ressource.StringRes, "Role_RoleName_Empty.Text");
                roleErrors.ErrorCode = "RoleNameEmpty";
            }

            if (roleErrors.FindError)
            {
                return(roleErrors);
            }

            if (pRole.Id == 0)
            {
                if (_roleManager.SelectRole(pRole.RoleName, true) != null)
                {
                    roleErrors.FindError = true;
                    //roleErrors.ResultMessage += "\n - " + MultiLanguageStrings.GetString(Ressource.StringRes, "Role_Save_AlreadyExist.Text");
                    roleErrors.ErrorCode = "RoleExists";
                }
                else
                {
                    _roleManager.AddRole(pRole);
                    //roleErrors.ResultMessage = MultiLanguageStrings.GetString(Ressource.StringRes, "Role_Save_OK.Text");
                    roleErrors.ErrorCode = "RoleCreated";
                }
            }
            else
            {
                //user UpdateRoles for this block
            }

            return(roleErrors);
        }
예제 #11
0
        public async Task AddRole(CommandEventArgs e)
        {
            string discordRole = e.GetArg(CommandsConstants.ParameterDiscordRole);
            string realRole    = e.GetArg(CommandsConstants.ParameterRealRole);

            try
            {
                CheckRole(e.Server.Roles, discordRole);
                BotRoles botRole = ParseRole(realRole);

                RoleManager.RemoveRole(discordRole, (long)e.Server.Id);
                RoleManager.AddRole(discordRole, botRole, (long)e.Server.Id);

                await SendStyleMessage(e.Channel, SettingsModuleResource.RolesConnected, SettingsModuleResource.Markdown);
            }
            catch (ArgumentException exp)
            {
                await SendStyleMessage(e.Channel,
                                       String.Format(SettingsModuleResource.RoleIsNotExist, exp.Message),
                                       SettingsModuleResource.Markdown);
            }
        }
예제 #12
0
        public override void OnHandlerMessage(OperationRequest request, OperationResponse response, ClientPeer peer)
        {
            //根据子操作代码分别进行不同的处理
            SubCode subCode = ParameterTool.GetParameter <SubCode>(request.Parameters, ParameterCode.SubCode, false);
            Dictionary <byte, object> parameters = response.Parameters;

            parameters.Add((byte)ParameterCode.SubCode, subCode);
            switch (subCode)
            {
            case SubCode.GetRole:
                List <Role> roleList = manager.GetRoleListByUser(peer.LoginUser);
                foreach (Role roleTemp in roleList)
                {
                    roleTemp.User = null;      //防止json解析错误
                }
                ParameterTool.AddParameter(parameters, ParameterCode.RoleList, roleList);
                break;

            case SubCode.AddRole:
                Role role = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                role.User = peer.LoginUser;
                manager.AddRole(role);
                role.User = null;      //防止json解析错误,实际上role对应的User已经添加到loginUser里了
                ParameterTool.AddParameter(parameters, ParameterCode.Role, role);
                break;

            case SubCode.SelectRole:
                peer.LoginRole = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                break;

            case SubCode.UpdateRole:
                Role roleUpdate = ParameterTool.GetParameter <Role>(request.Parameters, ParameterCode.Role);
                roleUpdate.User = peer.LoginUser;
                manager.UpdateRole(roleUpdate);      //更新当前角色
                response.ReturnCode = (short)ReturnCode.Success;
                break;
            }
        }
예제 #13
0
 private static void SeedRoles(this RoleManager <ApplicationRole> roleManager)
 {
     roleManager.AddRole(nameof(UserRole.Admin));
     roleManager.AddRole(nameof(UserRole.User));
 }
예제 #14
0
        private void Save_Button_Click(object sender, EventArgs e)
        {
            string errorMessages = "The following errors accured:\n";

            switch (Mode)
            {
            case "NEW":
                _role             = new Role(0);
                _role.Name        = titleTxb.Text;
                _role.Description = descTxb.Text;
                _role.Active      = true;
                if (RoleManager.AddRole(_role))
                {
                    MessageBox.Show("Role Added Successfully");
                    this.Close();
                }
                else
                {
                    MessageBox.Show("There was an error adding role.");
                }
                break;

            case "EDIT":
                if (_role.Id > 0)
                {
                    bool valid = true;
                    if (titleTxb.Text.Length > 25)
                    {
                        valid          = false;
                        errorMessages += "Title must be 25 characters or less.\n";
                    }
                    if (descTxb.Text.Length > 250)
                    {
                        valid          = false;
                        errorMessages += "Description must be 250 characters or less.\n";
                    }
                    if (!valid)
                    {
                        MessageBox.Show(errorMessages);
                        break;
                    }
                    Role editedRole = new Role(_role.Id)
                    {
                        Name        = titleTxb.Text,
                        Description = descTxb.Text,
                        Active      = true
                    };
                    try
                    {
                        if (RoleManager.UpdateRole(editedRole, _role))
                        {
                            this.DialogResult = DialogResult.OK;
                            MessageBox.Show("Role updated");
                        }
                        else
                        {
                            MessageBox.Show("Error updating role");
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error has Occured. \n Error Message: \n" + ex.Message);
                    }
                }
                break;

            default:
                break;
            }
        }
예제 #15
0
        public IHttpActionResult AddNewRole(ModifyRoleRequest model)
        {
            ResponseBase <RoleModel> response = new ResponseBase <RoleModel>()
            {
                IsSuccess      = true,
                MessageCode    = (int)ApiBaseErrorCode.API_SUCCESS,
                MessageContent = ApiBaseErrorCode.API_SUCCESS.ToString()
            };

            if (model.MenuSerials == null ||
                string.IsNullOrWhiteSpace(model.RoleName) ||
                string.IsNullOrWhiteSpace(model.ProjectGuid))
            {
                response.IsSuccess      = false;
                response.MessageCode    = (int)ApiBaseErrorCode.API_PARAM_ERROR;
                response.MessageContent = "必要参数缺失,请检查";
                return(Ok(response));
            }

            //组建权限字符串
            string    privilegeStr = "";
            MenuModel menumodel    = menumanager.GetMenu(model.ProjectGuid);

            if (menumodel != null)
            {
                foreach (MenuDetialModel item in menumodel.MenuList)
                {
                    string menuSerial = item.MenuSerial.PadLeft(3, '0');
                    if (model.MenuSerials.Exists(o => o == menuSerial))
                    {
                        privilegeStr += (menuSerial + "1");
                    }
                    else
                    {
                        privilegeStr += (menuSerial + "0");
                    }
                }
            }

            //授权停车场编号集合
            string parkingCodeStr = "";

            if (model.ParkingCodeList != null)
            {
                foreach (string item in model.ParkingCodeList)
                {
                    parkingCodeStr += item + ",";
                }
                parkingCodeStr = parkingCodeStr.TrimEnd(',');
            }

            RolePermissionModel content = new RolePermissionModel()
            {
                Guid            = Guid.NewGuid().ToString("N"),
                ProjectGuid     = model.ProjectGuid,
                RoleName        = model.RoleName,
                ContentDetial   = privilegeStr,
                ParkingCodeList = parkingCodeStr
            };

            if (!rolemanager.AddRole(content))
            {
                response.IsSuccess      = false;
                response.MessageCode    = (int)ApiBaseErrorCode.API_FAIL;
                response.MessageContent = ApiBaseErrorCode.API_FAIL.ToString();
            }
            response.Result = new RoleModel()
            {
                Guid = content.Guid, RoleName = content.RoleName
            };
            return(Ok(response));
        }