You are here

function _drupalgap_resource_user_permissions in DrupalGap 7.2

Same name and namespace in other branches
  1. 6 drupalgap.resource.inc \_drupalgap_resource_user_permissions()
  2. 7 drupalgap.resource.inc \_drupalgap_resource_user_permissions()

Returns the current user's permissions.

Return value

array Array of user roles and their corresponding permissions.

1 call to _drupalgap_resource_user_permissions()
drupalgap_services_request_postprocess_alter in ./drupalgap.module
Implements hook_services_request_postprocess_alter().

File

./drupalgap.resource.inc, line 262
This file implements the DrupalGap service resource call back functions.

Code

function _drupalgap_resource_user_permissions() {
  global $user;
  $uid = $user->uid;
  if ($uid == 0) {

    // Grab permissions for 'anonymous user' role.
    $query = db_select('role_permission', 'rp');
    $query
      ->condition('rp.rid', '1')
      ->fields('rp', array(
      'permission',
      'module',
    ));
    $result = $query
      ->execute();
    $results = $result
      ->fetchAll();
    foreach ($results as $_result) {
      $_result->name = 'anonymous user';
    }
    return $results;
  }
  else {

    // Grab roles for authenticated user.
    $query = db_select('users_roles', 'ur');
    $query
      ->condition('ur.uid', $uid)
      ->fields('ur', array(
      'rid',
    ));
    $result = $query
      ->execute();
    $results = $result
      ->fetchAll();
    if (empty($results)) {

      // The user only has the 'authenticated user' role.
      // Grab permissions for 'authenticated user' role.
      $query = db_select('role_permission', 'rp');
      $query
        ->condition('rp.rid', '2')
        ->fields('rp', array(
        'permission',
        'module',
      ));
      $result = $query
        ->execute();
      $results = $result
        ->fetchAll();
      foreach ($results as $_result) {
        $_result->name = 'authenticated user';
      }
      return $results;
    }
    else {

      // The user has roles other than the 'authenticated user' role.
      $query = db_select('users_roles', 'ur');
      $query
        ->condition('ur.uid', $uid)
        ->fields('ur', array(
        'rid',
      ))
        ->fields('r', array(
        'name',
      ))
        ->innerJoin('role', 'r', 'ur.rid = r.rid');
      $query
        ->fields('rp', array(
        'permission',
        'module',
      ))
        ->innerJoin('role_permission', 'rp', 'rp.rid = r.rid');
      $result = $query
        ->execute();
      return $result
        ->fetchAll();
    }
  }
}