public async Task <IEnumerable <EntityPermissionSet> > GetEntityPermissionsForRole(IUnitOfWork uofw, string roleID)
        {
            var rolePermissions = await uofw.GetRepository <AccessLevel>().All()
                                  .Where(x => !x.Hidden && x.RoleID == roleID)
                                  .Select(x => new
            {
                x.Entity.TypeName,
                x.AccessModifier
            })
                                  .ToListAsync();

            var allEntities = await _mappedBaseEntityService.GetEntitiesAsync();

            var ret = new List <EntityPermissionSet>();

            foreach (var item in allEntities)
            {
                var inRoleForType = rolePermissions.Where(x => x.TypeName == item.TypeName);
                var el            = new EntityPermissionSet()
                {
                    EntityType = item.TypeName,
                    Create     = inRoleForType.Any(x => x.AccessModifier == Base.Enums.AccessModifier.Create),
                    Read       = inRoleForType.Any(x => x.AccessModifier == Base.Enums.AccessModifier.Read),
                    Update     = inRoleForType.Any(x => x.AccessModifier == Base.Enums.AccessModifier.Update),
                    Delete     = inRoleForType.Any(x => x.AccessModifier == Base.Enums.AccessModifier.Delete),
                };
                ret.Add(el);
            }
            return(ret);
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> Test()
        {
            using (var uofw = CreateUnitOfWork)
            {
                var a = await _mappedBaseEntityService.GetEntitiesAsync();

                var obj = _testObjectService.Create(uofw, new TestObject()
                {
                    Title = "Old title", Number = 5
                });
                //var dto = new { Title = "DTO Text", Number = -7 };
                //uofw.GetRepository<TestObject>().SetFromObject(obj.ID, dto);
                //obj.ChangeProperty(uofw, x => x.Number, 10)
                //    .ChangeProperty(uofw, x => x.Title, "Eureka!");

                obj.Number = 15;
                obj.Title  = "jopa";
                _testObjectService.Update(uofw, obj);
                await uofw.SaveChangesAsync();

                return(Ok(new { obj }));
            }
        }