Exemplo n.º 1
0
        private void ReadObjectRolePermissionFromSql(SqlDataReader reader, ObjectRolePermissionsWrapper objectRolePermissionsWrapper)
        {
            var obj = ReadRolePermissionFromSql(reader);

            objectRolePermissionsWrapper.ObjectId       = reader["ObjectId"] != DBNull.Value ? (Guid)reader["ObjectId"] : Guid.Empty;
            objectRolePermissionsWrapper.Type           = reader["Type"] != DBNull.Value ? (string)reader["Type"] : string.Empty;
            objectRolePermissionsWrapper.Fr8AccountId   = reader["Fr8AccountId"] != DBNull.Value ? (string)reader["Fr8AccountId"] : string.Empty;
            objectRolePermissionsWrapper.OrganizationId = reader["OrganizationId"] != DBNull.Value ? (int?)reader["OrganizationId"] : null;

            //read property name and check for values
            var propertyName = reader["PropertyName"] != DBNull.Value ? (string)reader["PropertyName"] : string.Empty;

            if (string.IsNullOrEmpty(propertyName))
            {
                objectRolePermissionsWrapper.RolePermissions.Add(obj);
            }
            else
            {
                //check if the same property is already added to this list
                if (objectRolePermissionsWrapper.Properties.ContainsKey(propertyName))
                {
                    objectRolePermissionsWrapper.Properties[propertyName].Add(obj);
                }
                else
                {
                    objectRolePermissionsWrapper.Properties[propertyName] = new List <RolePermission> {
                        obj
                    };
                }
            }
        }
Exemplo n.º 2
0
        public ObjectRolePermissionsWrapper GetRecordBasedPermissionSetForObject(Guid dataObjectId, string dataObjectType)
        {
            using (var connection = OpenConnection(_sqlConnectionProvider))
            {
                using (var command = new SqlCommand())
                {
                    command.Connection = connection;

                    const string cmd =
                        @"select rp.Id, orp.PropertyName, orp.ObjectId as ObjectId, orp.Type, anr.Id as roleId, anr.Name as roleName, rp.lastUpdated, rp.createDate,
                            p.Id as PermissionSetId, p.ObjectType, orp.Fr8AccountId, orp.OrganizationId
                          from dbo.RolePermissions rp          
                          inner join dbo.PermissionSets p on rp.PermissionSetId = p.Id                                                                  
                          inner join dbo.ObjectRolePermissions orp on rp.Id = orp.RolePermissionId                               
                          inner join dbo.AspNetRoles anr on rp.RoleId = anr.Id where orp.ObjectId = @objectId and orp.Type = @objectType ";

                    command.Parameters.AddWithValue("@objectId", dataObjectId);
                    command.Parameters.AddWithValue("@objectType", dataObjectType);
                    command.CommandText = cmd;

                    var result = new ObjectRolePermissionsWrapper();

                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            ReadObjectRolePermissionFromSql(reader, result);
                        }
                    }

                    //fetch all permissions for ObjectRolePermission Sets
                    foreach (var item in result.RolePermissions)
                    {
                        var selectPermissionSetSql = "select PermissionTypeTemplateId from dbo.PermissionSetPermissions where PermissionSetId = @permissionSetId";

                        command.Parameters.Clear();
                        command.Parameters.AddWithValue("@permissionSetId", item.PermissionSet.Id);
                        command.CommandText = selectPermissionSetSql;

                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                //this data is only for internal logic, cannot be saved
                                item.PermissionSet.Permissions.Add(new _PermissionTypeTemplate()
                                {
                                    Id = reader["PermissionTypeTemplateId"] != DBNull.Value ? (int)reader["PermissionTypeTemplateId"] : 0
                                });
                            }
                        }
                    }

                    return(result);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Add new role permissions to list, or update role permissions
        /// </summary>
        /// <param name="id"></param>
        /// <param name="rolePermissions"></param>
        public void AddOrUpdateRecordBasedPermissionSet(string id, ObjectRolePermissionsWrapper rolePermissions)
        {
            lock (_sync)
            {
                CachedPermissionSetObject cachedObject;
                if (!_cachedPermissionSetObjects.TryGetValue(id, out cachedObject))
                {
                    var expirOn = _expirationStrategy.NewExpirationToken();
                    cachedObject = new CachedPermissionSetObject(rolePermissions, expirOn);

                    _cachedPermissionSetObjects.Add(id, cachedObject);
                }
                else
                {
                    var expirOn = _expirationStrategy.NewExpirationToken();
                    cachedObject = new CachedPermissionSetObject(rolePermissions, expirOn);

                    _cachedPermissionSetObjects[id] = cachedObject;
                }
            }
        }
Exemplo n.º 4
0
 public CachedPermissionSetObject(ObjectRolePermissionsWrapper rolePermissions, IExpirationToken expiration)
 {
     ObjectRolePermissionsWrapper = rolePermissions;
     Expiration = expiration;
 }