// Check if user has access.
function restful_get_access($object, $type)
{
if ( entity_access ($type,$object) ) {
return true;
} else {
return false;
}
}
/**
* Check if user has access.
*/
function restful_get_access($object, $type) {
if (entity_access($type, $object)) {
return TRUE;
}
else {
return FALSE;
}
}
/**
* Check if user has access.
*/
function restful_get_access($object, $type) {
if (entity_access($type, $object)) {
return TRUE;
}
return FALSE;
}
/**
* Check if user has access.
*/
function restful_get_access($object, $type) {
return entity_access($type, $object);
}
/**
* Check if user has access.
*/
function restful_get_access($object, $type) {
// ...
}
/**
* Check if user has access to a given entity.
*
* @param string $entity_type
* The entity type.
* @param \Entity $entity
* The entity object.
* @param stdClass $account
* (optional) The user object to perform the check on. If empty, Defaults to
* the current user.
*
* @return bool
* TRUE if the user has access to the entity, otherwise FALSE.
*/
function restful_get_access($entity_type, $entity, $account = NULL) {
// ...
}
/**
* Check if user has access to a given entity.
*
* @param string $entity_type
* The entity type.
* @param \Entity $entity
* The entity object.
* @param stdClass $account
* (optional) The user object to perform the check on. If empty, Defaults to
* the current user.
*
* @return bool
* TRUE if the user has access to the entity, otherwise FALSE.
*/
function restful_get_access($entity_type, $entity, $account = NULL) {
return entity_access($entity_type, $entity, $account);
}
Amitai Burstein (@amitaibu)
https://example.com/node/1
https://example.com/node/1.json
{
body: {
value: "This is the body
",
format: "filtered_html"
},
field_tags: [ ],
nid: "1",
vid: "1",
is_new: false,
type: "article",
title: "A new article",
language: "und",
status: "1",
promote: "1",
sticky: "0",
revision: null,
}
https://github.com/symfony/symfony2.json
{
nid: "1",
vid: "1",
is_new: false,
title: "Symfony2",
type: "repository",
field_user_ref: 100,
language: "fr",
// ...
}
https://example.com/api/articles/1
{
data: [
{
id: "1",
label: "A new article",
self: "https://example.com/api/v2.0/articles/1"
}
],
self: {
title: "Self",
href: "https://example.com/api/v2.0/articles/1"
}
}
https://example.com/api/v1.5/articles/1
{
data: [
{
id: "1",
label: "A new article",
self: "https://example.com/api/v1.5/articles/1",
text: "This is the body
",
user: {
id: "1",
label: "admin",
self: "https://example.com/api/v1.0/users/1",
mail: "admin@example.com"
}
}
],
self: {
title: "Self",
href: "https://example.com/api/v1.5/articles/1"
}
}
https://example.com/api/v1.5/articles/1
class RestfulExampleArticlesResource__1_5 extends RestfulEntityBaseNode {
/**
* Overrides RestfulEntityBaseNode::publicFieldsInfo().
*/
public function publicFieldsInfo() {
$public_fields = parent::publicFieldsInfo();
$public_fields['text'] = array(
'property' => 'field_text_area',
'sub_property' => 'value',
);
$public_fields['user'] = array(
'property' => 'author',
'resource' => array(
// The bundle of the entity.
'user' => array(
// The name of the resource to map to.
'name' => 'users',
// Determines if the entire resource should appear, or only the ID.
'full_view' => TRUE,
),
),
);
return $public_fields;
}
}
// Get the RESTful handler.
$handler = restful_get_restful_handler('articles', 1, 5);
// Get a list of articles.
$result = $handler->get(); // https://example.com/api/v1.5/articles
// Sort list DESC.
$request = array(
'sort' => array(
'id' => 'DESC',
),
);
$result = $handler->get('', $request); // https://example.com/api/v1.5/articles/1?sort=-id
// Get article with ID 1.
$result = $handler->get(1); // https://example.com/api/v1.5/articles/1
// Get the RESTful handler.
$handler = restful_get_restful_handler('articles', 1, 5);
// Create a new "article" resource.
$request = array('label' => 'My new article');
$result = $handler->post('', $request);
// Update just the label.
$request = array('label' => 'Edited label');
$handler->patch($result['id'], $request);
// Delete.
$handler->delete($result['id']);
GET: https://example.com/api
{
data: [
{
label: "Articles",
description: "Export the article content type with "cookie" authentication.",
name: "articles__2_0",
resource: "articles",
major_version: 2,
minor_version: 0,
self: "https://example.com/api/v2.0/articles"
},
{
label: "Login",
description: "Login a user and return a JSON along with the authentication cookie..",
// ...
self: "https://example.com/api/login"
},
{
label: "File upload",
description: "A file upload wrapped with RESTful.",
// ...
self: "https://example.com/api/file-upload"
},
{
label: "CSRF token",
description: "Export the CSRF token unique for each user.",
// ...
self: "https://example.com/api/session/token"
},
],
count: 10,
self: {
title: "Self",
href: "https://example.com/api"
}
}
}
OPTIONS: https://example.com/api/articles
{
label: {
info: {
label: "Label",
description: "The label of the resource."
},
data: {
type: "string",
read_only: false,
cardinality: 1,
required: false
},
form_element: {
type: "texfield",
default_value: "",
placeholder: "",
size: 255,
allowed_values: null
}
}
}
https://example.com/api/articles/1
{
data: [
{
id: "1",
label: "A new article",
self: "https://example.com/api/v2.0/articles/1"
}
],
self: {
title: "Self",
href: "https://example.com/api/v2.0/articles/1"
}
}
https://example.com/api/articles/1
{
hal:articles: [
{
id: "1",
label: "A new article",
_links: {
self: {
href: "https://example.com/api/v2.0/articles/1"
}
}
}
],
_links: {
self: {
title: "Self",
href: "https://example.com/api/v2.0/articles/1"
},
curies: {
name: "hal",
href: "https://example.com/docs/rels/{rel}",
templated: true
}
}
}
https://github.com/Gizra/restful
Scenario: Validate a user can login to the site and see the homepage.
Given I visit "/user/login"
# Fill the username and password input fields, and click submit
When I fill "username" with "foo"
And I fill "password" with "bar"
And I press "Login"
Then I should get a "200" HTTP response
Scenario: Validate a user can login to the site and see the homepage.
Given I login with an "authenticated" user
When I go to the homepage
Then I should have access
Scenario: Validate a user has access to an article.
Given I login with an "authenticated" user
When I go to "node/1"
Then I should have access
Scenario: Validate a user has access to an article.
Given I login with an "authenticated" user
When I go to the content "My first article"
Then I should have access
/**
* @When /^I go to the content "([^"]*)"$/
*/
public function iGoToTheContent($title) {
$query = new entityFieldQuery();
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('title', $title)
->propertyCondition('status', NODE_PUBLISHED)
->range(0, 1)
->execute();
if (empty($result['node'])) {
$params = array('@title' => $title);
throw new Exception(format_string("Node @title not found.", $params));
}
$nid = key($result['node']);
return new Given('I go to "node/' . $nid. '"');
}