Example #1
0
        public override bool BeforeSaveSettings(RoleSettings roleSettings)
        {
            if (My.IsOwner)
            {
                PermissionSettings settings = SettingManager.CloneSetttings <PermissionSettings>(AllSettings.Current.PermissionSettings);

                settings.ContentPermissionLimit.LimitType = _Request.Get <PermissionLimitType>("ContentPermissionLimit", Method.Post, PermissionLimitType.RoleLevelLowerMe);
                settings.UserPermissionLimit.LimitType    = _Request.Get <PermissionLimitType>("UserPermissionLimit", Method.Post, PermissionLimitType.RoleLevelLowerMe);

                if (settings.ContentPermissionLimit.LimitType == PermissionLimitType.ExcludeCustomRoles)
                {
                    string key = "content.{0}.{1}";
                    GetLimitRoleList(key, settings.ContentPermissionLimit);
                }

                if (settings.UserPermissionLimit.LimitType == PermissionLimitType.ExcludeCustomRoles)
                {
                    string key = "user.{0}.{1}";
                    GetLimitRoleList(key, settings.UserPermissionLimit);
                }

                SettingManager.SaveSettings(settings);
            }

            return(true);
        }
Example #2
0
        internal static IList <int> GetActionPrivilegeIds(PermissionSettings permissionSettings)
        {
            var privilegeIds = new List <int>();

            if (permissionSettings.Action == ActionEnum.DeleteProperty)
            {
                privilegeIds.Add((int)CostumerPrivilege.DeleteProperty);
            }
            else if (permissionSettings.Action == ActionEnum.SendingDocuments)
            {
                privilegeIds.Add((int)PropertyPrivilege.SendDocument);
            }
            else if (permissionSettings.Action == ActionEnum.CheckBiddingStatus)
            {
                privilegeIds.Add((int)CostumerPrivilege.ScheduleViewing);
                privilegeIds.Add((int)CostumerPrivilege.MakeOffer);
            }
            else if (permissionSettings.Action == ActionEnum.ChangeBiddingPrice)
            {
                privilegeIds.Add((int)AgentPrivilege.ChangeBiddingPrice);
            }
            else if (permissionSettings.Action == ActionEnum.MenuScheduleViewing)
            {
                privilegeIds.Add((int)CostumerPrivilege.ScheduleViewing);
            }
            else if (permissionSettings.Action == ActionEnum.MakeOffer)
            {
                privilegeIds.Add((int)CostumerPrivilege.MakeOffer);
            }

            return(privilegeIds);
        }
Example #3
0
        //#region TryPay

        //private readonly Hash<int, int> costs = new Hash<int, int>();
        //private readonly Hash<string , int> missingDictionary = new Hash<string, int>();
        //private readonly HashSet<BuildingBlock> toRemove = new HashSet<BuildingBlock>();

        //private bool TryPay(BasePlayer player, BuildingGrade.Enum targetGrade, out string missingResources) {
        //    FindUpgradeCosts(player, targetGrade);
        //    if (!CanPay(player, out missingResources)) {
        //        return false;
        //    }

        //    var collect = Pool.GetList<Item>();
        //    foreach (var entry in costs) {
        //        player.inventory.Take(collect, entry.Key, entry.Value);
        //        player.Command(string.Concat("note.inv ", entry.Key, " ", entry.Value * -1f));
        //    }
        //    foreach (var item in collect) {
        //        item.Remove();
        //    }
        //    Pool.FreeList(ref collect);
        //    missingResources = null;
        //    return true;
        //}

        //private bool CanPay(BasePlayer player, out string missingResources) {
        //    foreach (var entry in costs) {
        //        if (entry.Value <= 0) continue;
        //        var missingAmount = entry.Value - player.inventory.GetAmount(entry.Key);
        //        if (missingAmount <= 0) continue;
        //       var displayName=  ItemManager.FindItemDefinition(entry.Key)?.displayName.english;
        //       if (string.IsNullOrEmpty(displayName)) displayName = entry.Key.ToString();
        //         missingDictionary[displayName] += missingAmount;
        //    }
        //    if (missingDictionary.Count > 0) {
        //        StringBuilder stringBuilder = Pool.Get<StringBuilder>();
        //        foreach (var entry in missingDictionary) {
        //            stringBuilder.AppendLine(Lang("MissingResourceFormat", player.UserIDString, entry.Key, entry.Value));
        //        }
        //        missingResources = stringBuilder.ToString();
        //        stringBuilder.Clear();
        //        missingDictionary.Clear();
        //        Pool.Free(ref stringBuilder);
        //        return false;
        //    }
        //    missingResources = null;
        //    return true;
        //}

        //private void FindUpgradeCosts(BasePlayer player, BuildingGrade.Enum targetGrade) {
        //    var autoGrade = targetGrade == BuildingGrade.Enum.None;
        //    foreach (var buildingBlock in allBuildingBlocks) {
        //        if (buildingBlock == null || buildingBlock.IsDestroyed) {
        //            toRemove.Add(buildingBlock);
        //            continue;
        //        }
        //        BuildingGrade.Enum grade = targetGrade;
        //        if (CheckBuildingGrade(buildingBlock, false, ref grade)) {
        //            if (!autoGrade || tempGrantedGrades.Contains(grade)) {
        //                if (!CanUpgrade(buildingBlock, player, grade)) {
        //                    toRemove.Add(buildingBlock);
        //                    continue;
        //                }
        //            }
        //        }
        //        var costToBuild = buildingBlock.blockDefinition.grades[(int)grade].costToBuild;
        //        foreach (var itemAmount in costToBuild) {
        //            costs[itemAmount.itemid] += (int)itemAmount.amount;
        //        }
        //    }

        //    foreach (var buildingBlock in toRemove) {
        //        allBuildingBlocks.Remove(buildingBlock);
        //    }
        //    toRemove.Clear();
        //}

        //#endregion TryPay

        #endregion Methods

        #endregion Building Grade Control

        #region Helpers

        private static BuildingBlock GetLookingAtBuildingBlock(BasePlayer player, PermissionSettings permS)
        {
            RaycastHit raycastHit;
            var        flag = Physics.Raycast(player.eyes.HeadRay(), out raycastHit, permS.distance, Rust.Layers.Mask.Construction);

            return(flag ? raycastHit.GetEntity() as BuildingBlock : null);
        }
Example #4
0
 public void SetUp()
 {
     this.permissionSettings = new PermissionSettings();
     this.mockPermission     = Substitute.For <IPermissionRule>();
     this.permissionRules    = new List <IPermissionRule>()
     {
         this.mockPermission
     };
 }
        public void IsVisible_ShouldAlwaysEqualToTrue()
        {
            // Arrange
            var permissionValue = new PermissionSettings();

            // Act
            var isVisible = this.sut.IsVisible(permissionValue);

            // Assert
            Assert.That(isVisible, Is.True);
        }
Example #6
0
 private void InitializeVariables()
 {
     this.callContext          = new CallContext();
     this.roomUserPrivileges   = new List <PropertyUserPrivilege>();
     this.permissionAuthorizer = Substitute.For <IPermissionAuthorizer>();
     this.permissionSettings   = new PermissionSettings()
     {
         CallContext          = callContext,
         PrivilegesByUserRoom = this.roomUserPrivileges
     };
     this.sut = new CostumerPermissionRule(this.permissionAuthorizer);
 }
        public void IsVisible_WhenBiddingIsLockedIsFalse_ShouldIsEnabledEqualToTrue()
        {
            // Arrange
            var permissionValue = new PermissionSettings()
            {
                IsBiddingLocked = false
            };

            // Act
            var isVisible = this.sut.IsVisible(permissionValue);

            // Assert
            Assert.That(isVisible, Is.True);
        }
        public void IsEnabled_WhenPropertyStatusIsNot5_ShouldIsEnabledEqualToTrue(int propertyStatusTypeId)
        {
            // Arrange
            var permissionValue = new PermissionSettings()
            {
                PropertyStatusTypeId = propertyStatusTypeId
            };

            // Act
            var isEnabled = this.sut.IsEnabled(permissionValue);

            // Assert
            Assert.That(isEnabled, Is.True);
        }
        public void IsEnabled_WhenPropertyStatusIs5_ShouldIsEnabledEqualToFalse()
        {
            // Arrange
            var permissionValue = new PermissionSettings()
            {
                PropertyStatusTypeId = 5
            };

            // Act
            var isEnabled = this.sut.IsEnabled(permissionValue);

            // Assert
            Assert.That(isEnabled, Is.False);
        }
Example #10
0
        public void IsVisible_ShouldReverseOfIsPrivate(bool isPrivate)
        {
            // Arrange
            var permissionValue = new PermissionSettings()
            {
                IsPrivate = isPrivate
            };

            // Act
            var isVisible = this.sut.IsVisible(permissionValue);

            // Assert
            Assert.That(isVisible, Is.EqualTo(!isPrivate));
        }
        public void IsEnabled_WhenBiddingIsLocked_ShouldIsEnabledEqualToFalse()
        {
            // Arrange
            var permissionValue = new PermissionSettings()
            {
                IsBiddingLocked = true
            };

            // Act
            var isEnabled = this.sut.IsEnabled(permissionValue);

            // Assert
            Assert.That(isEnabled, Is.False);
        }
Example #12
0
        GetActionPrivilegeIds_WhenActionIsCheckBiddingStatus_ShouldPrivilegesIdContains2ItemsAndValuesAre1And2()
        {
            // Arrange
            var permissionSettings = new PermissionSettings()
            {
                Action = ActionEnum.CheckBiddingStatus
            };

            // Act
            var actionPrivilegeIds = CostumerPermissionRule.GetActionPrivilegeIds(permissionSettings);

            // Assert
            Assert.That(actionPrivilegeIds, Has.Exactly(1).EqualTo(1)
                        .And.Exactly(1).EqualTo(2));
        }
Example #13
0
        GetActionPrivilegeIds_WhenActionEnumIsOnlyDependsOnePrivilege_ShouldListContains1MemberWhichExactlyTheGivenPrivilege(
            ActionEnum actionEnum, int privilegeId)
        {
            // Arrange
            var permissionSettings = new PermissionSettings()
            {
                Action = actionEnum
            };

            // Act
            var actionPrivilegeIds = CostumerPermissionRule.GetActionPrivilegeIds(permissionSettings);

            // Assert
            Assert.That(actionPrivilegeIds, Has.Exactly(1).EqualTo(privilegeId));
        }
Example #14
0
        private PermissionSettings GetPermissionS(BasePlayer player)
        {
            int priority = 0;
            PermissionSettings permissionSettings = null;

            foreach (var entry in configData.permS)
            {
                if (entry.Value.priority >= priority && permission.UserHasPermission(player.UserIDString, entry.Key))
                {
                    priority           = entry.Value.priority;
                    permissionSettings = entry.Value;
                }
            }
            return(permissionSettings ?? new PermissionSettings());
        }
Example #15
0
        public void ApplyRule_WhenThereAreTwoRulesAndTheFirstOneIsVisibleIsFalse_ShouldSecondRuleIsVisibleCalledNever()
        {
            // Arrange
            this.mockPermission.IsEnabled(this.permissionSettings).Returns(false);
            var secondMockedRule = Substitute.For <IPermissionRule>();

            this.permissionRules.Add(secondMockedRule);
            var restrictedPermission = new RestrictedPermission(this.permissionSettings, this.permissionRules);
            var permissionSettings   = new PermissionSettings();

            // Act
            restrictedPermission.ApplyRules();

            // Assert
            secondMockedRule.DidNotReceive().IsVisible(this.permissionSettings);
        }
Example #16
0
        internal virtual bool IsVisibleAndEnabled(PermissionSettings permissionSettings)
        {
            var privilegeIds = GetActionPrivilegeIds(permissionSettings);

            foreach (var privilegeId in privilegeIds)
            {
                var isAuthorized = this.permissionAuthorizer.IsAuthorized(permissionSettings.CallContext, permissionSettings.PrivilegesByUserRoom, privilegeId);

                if (isAuthorized)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #17
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app,
                              IWebHostEnvironment env,
                              IBackgroundJobClient backgroundJobs,
                              IServiceProvider serviceProvider,
                              UserManager <User> userManager)
        {
            //if (env.IsDevelopment())
            //{
            //	app.UseDeveloperExceptionPage();
            //}
            app.ConfigureExceptionHandler();

            app.UseRouting();

            app.UseIdentityServer();

            app.UseAuthorization();
            app.UseAuthentication();

            app.UseCors(AllowSpecificOrigins);

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers().RequireCors(AllowSpecificOrigins);
                endpoints.MapHub <IngredientHub>("/ingredients").RequireCors(AllowSpecificOrigins);
            });

            InitializeContainer();

            container.Verify();

            RolesSetup.createRoles(serviceProvider).Wait();
            PermissionSettings.SeedPermissions(container).Wait();
            TablesSettings.SeedTables(container).Wait();
            RestaurantDetailsSettings.DetailsSetup(container).Wait();

            ConfigureReports.ConfigureReportsDate(container, userManager).Wait();
        }
Example #18
0
 public RestrictedPermission(PermissionSettings values, IEnumerable<IPermissionRule> rules)
 {
     this.values = values;
     this.rules = rules;
 }
Example #19
0
 public static void Add <TType>(PermissionSettings permissionSettings)
 {
     _permissionSettings.Add(typeof(TType), permissionSettings);
 }
Example #20
0
        private IEnumerator UpgradeBuildingBlocks(BasePlayer player, BuildingGrade.Enum targetGrade, PermissionSettings permS, bool isAdmin)
        {
            var pay = permS.pay && !permission.UserHasPermission(player.UserIDString, PERMISSION_NO_COST);
            int current = 0, success = 0;
            var autoGrade = targetGrade == BuildingGrade.Enum.None;

            foreach (var buildingBlock in allBuildingBlocks)
            {
                if (buildingBlock == null || buildingBlock.IsDestroyed)
                {
                    continue;
                }
                BuildingGrade.Enum grade = targetGrade;
                if (CheckBuildingGrade(buildingBlock, true, ref grade))
                {
                    if (!autoGrade || tempGrantedGrades.Contains(grade))
                    {
                        if (TryUpgradeToGrade(buildingBlock, player, grade, pay, isAdmin))
                        {
                            success++;
                        }
                    }
                }

                if (++current % configData.globalS.perFrame == 0)
                {
                    yield return(CoroutineEx.waitForEndOfFrame);
                }
            }

            foreach (var item in collect)
            {
                takeOutItems[item.info.itemid] += item.amount;
                item.Remove();
            }
            foreach (var entry in takeOutItems)
            {
                player.Command("note.inv " + entry.Key + " " + entry.Value * -1f);
            }

            if (player != null && player.IsConnected)
            {
                if (missingDictionary.Count > 0)
                {
                    StringBuilder stringBuilder = Pool.Get <StringBuilder>();
                    var           language      = lang.GetLanguage(player.UserIDString);
                    foreach (var entry in missingDictionary)
                    {
                        stringBuilder.AppendLine(Lang("MissingItemsFormat", player.UserIDString, GetItemDisplayName(language, entry.Key), entry.Value));
                    }
                    var missingResources = stringBuilder.ToString();
                    stringBuilder.Clear();
                    Pool.Free(ref stringBuilder);
                    Print(player, success > 0 ? Lang("UpgradeNotEnoughItemsSuccess", player.UserIDString, success, missingResources) : Lang("UpgradeNotEnoughItems", player.UserIDString, missingResources));
                }
                else
                {
                    Print(player, success > 0 ? Lang("FinishedUpgrade", player.UserIDString, success) : Lang("NotUpgraded", player.UserIDString));
                }
            }

            collect.Clear();
            takeOutItems.Clear();
            missingDictionary.Clear();
        }
Example #21
0
        private IEnumerator DowngradeBuildingBlocks(BasePlayer player, BuildingGrade.Enum targetGrade, PermissionSettings permS, bool isAdmin)
        {
            int current = 0, success = 0;
            var autoGrade = targetGrade == BuildingGrade.Enum.None;

            foreach (var buildingBlock in allBuildingBlocks)
            {
                if (buildingBlock == null || buildingBlock.IsDestroyed)
                {
                    continue;
                }
                BuildingGrade.Enum grade = targetGrade;
                if (CheckBuildingGrade(buildingBlock, false, ref grade))
                {
                    if (!autoGrade || tempGrantedGrades.Contains(grade))
                    {
                        if (TryDowngradeToGrade(buildingBlock, player, grade /*, permS.refund*/, isAdmin: isAdmin))
                        {
                            success++;
                        }
                    }
                }

                if (current++ % configData.globalS.perFrame == 0)
                {
                    yield return(CoroutineEx.waitForEndOfFrame);
                }
            }

            if (player != null && player.IsConnected)
            {
                Print(player, success > 0 ? Lang("FinishedDowngrade", player.UserIDString, success) : Lang("NotDowngraded", player.UserIDString));
            }
        }
 public void SetUp()
 {
     this.permissionSettings = new PermissionSettings();
 }
Example #23
0
        public IEnumerator StartChangeBuildingGrade(BuildingBlock sourceEntity, BasePlayer player, BuildingGrade.Enum targetGrade, HashSet <uint> filter, PermissionSettings permS, bool isUpgrade, bool isAll, bool isAdmin)
        {
            yield return(GetAllBuildingBlocks(sourceEntity, filter, isAll));

            //if (pay) {
            //    FindUpgradeCosts(targetGrade);
            //    if (!CanAffordUpgrade(player)) {
            //        Clear();
            //        yield break;
            //    }
            //    PayForUpgrade(costs, player);
            //}

            Print(player, Lang(isUpgrade ? "StartUpgrade" : "StartDowngrade", player.UserIDString));
            var playerID = player.userID;

            yield return(isUpgrade ? UpgradeBuildingBlocks(player, targetGrade, permS, isAdmin) : DowngradeBuildingBlocks(player, targetGrade, permS, isAdmin));

            tempFriends.Clear();
            allBuildingBlocks.Clear();
            tempGrantedGrades.Clear();
            cooldowns[playerID]  = Time.realtimeSinceStartup;
            changeGradeCoroutine = null;
        }
 public bool IsEnabled(PermissionSettings permissionSettings)
 {
     return(permissionSettings.PropertyStatusTypeId != 5);
 }
 public bool IsVisible(PermissionSettings permissionSettings)
 {
     return(true);
 }
Example #26
0
 public bool IsVisible(PermissionSettings permissionSettings)
 {
     return(!permissionSettings.IsPrivate);
 }
Example #27
0
 public bool IsEnabled(PermissionSettings permissionSettings)
 {
     return(!permissionSettings.IsPrivate);
 }
Example #28
0
 internal override bool IsVisibleAndEnabled(PermissionSettings permissionSettings)
 {
     this.IsVisibleAndEnabledCalledTimes++;
     return(true);
 }
Example #29
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHangfire(configuration => configuration
                                 .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
                                 .UseSimpleAssemblyNameTypeSerializer()
                                 .UseRecommendedSerializerSettings()
                                 .UseSqlServerStorage(Configuration.GetConnectionString("SqlConnection"), new SqlServerStorageOptions
            {
                CommandBatchMaxTimeout       = TimeSpan.FromMinutes(5),
                SlidingInvisibilityTimeout   = TimeSpan.FromMinutes(5),
                QueuePollInterval            = TimeSpan.Zero,
                UseRecommendedIsolationLevel = true,
                DisableGlobalLocks           = true
            }));

            services.AddHangfireServer();

            services.AddCors(options =>
            {
                options.AddPolicy(name: AllowSpecificOrigins, builder =>
                {
                    builder.WithOrigins("http://localhost:3000")
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });

            services.AddSignalR();

            services.AddControllers().AddNewtonsoftJson(options =>
                                                        options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
                                                        );;

            services.AddDbContext <ApplicationDbContext>(options =>
                                                         options.UseSqlServer(Configuration.GetConnectionString("SqlConnection")));
            //Dev db and real db are different Reminder

            services.AddScoped <IAuthorizationHandler, PermissionHandler>();

            services.AddSimpleInjector(container, options => {
                options.AddAspNetCore()
                .AddControllerActivation();
            });

            services.AddIdentity <User, Roles>(options =>
            {
                options.SignIn.RequireConfirmedAccount        = true;
                options.Tokens.EmailConfirmationTokenProvider = TokenOptions.DefaultEmailProvider;
            }).AddDefaultTokenProviders()
            .AddEntityFrameworkStores <ApplicationDbContext>();

            services.AddIdentityServer()
            .AddJwtBearerClientAuthentication()
            .AddAspNetIdentity <User>()
            .AddInMemoryApiResources(IdentityServerConfiguration.GetApis())
            .AddInMemoryClients(IdentityServerConfiguration.GetClients())
            .AddDeveloperSigningCredential();

            var JwtSettingsSection = Configuration.GetSection("JwtSettings");

            services.Configure <JwtTokenSettings>(JwtSettingsSection);
            var JwtTokenSettings = JwtSettingsSection.Get <JwtTokenSettings>();

            var key = Encoding.ASCII.GetBytes(JwtTokenSettings.Secret);

            services.AddAuthentication(options => {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer("Bearer", options =>
            {
                options.RequireHttpsMetadata      = false;
                options.SaveToken                 = true;
                options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
                {
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidIssuer      = JwtTokenSettings.Issuer,
                    ValidAudience    = JwtTokenSettings.Audience,
                    ClockSkew        = TimeSpan.Zero
                };

                options.Events = new JwtBearerEvents
                {
                    OnMessageReceived = context =>
                    {
                        var accessToken = context.Request.Query["access_token"];

                        // If the request is for hub
                        var path = context.HttpContext.Request.Path;
                        if (!string.IsNullOrEmpty(accessToken) &&
                            (path.StartsWithSegments("/ingredients")))
                        {
                            // Read the token out of the query string
                            context.Token = accessToken;
                        }
                        return(Task.CompletedTask);
                    }
                };
            });

            services.AddAuthorization(options =>
                                      options = PermissionSettings.CreatePermissions(options)
                                      );
        }
Example #30
0
 public bool IsVisible(PermissionSettings permissionSettings)
 {
     return(this.IsVisibleAndEnabled(permissionSettings));
 }