Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2017
475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.32 KB | None | 0 0
  1. /*
  2.     HTTP: POST
  3.     Returns: Created User object upon successful registration.
  4. */
  5. function agfe_api_register_callback() {
  6.     // Validate the request is a POST and return proper response code on failure.
  7.     if (_isAuthenticated() == false) {
  8.       header('HTTP/1.1 401 Unauthorized');
  9.       return;
  10.     }
  11.     if ($_SERVER['REQUEST_METHOD'] != 'POST'){
  12.       header('HTTP/1.1 405 Not Post');
  13.       return;
  14.     }
  15.  
  16.     // {"name": "John Doe","mail": "testaddress@devetry.com","gender":"Male"}
  17.     // Receive stream contents (body) of POST request in JSON format.
  18.     $received_data = file_get_contents("php://input", TRUE);
  19.     $user_json = drupal_json_decode($received_data, TRUE);
  20.  
  21.     // Send Error 400 response if required fields missing
  22.     if (empty($user_json['gender'])) { $e400=true; $e400str = 'gender required'; }
  23.     else if (empty($user_json['mail'])) { $e400=true; $e400str = 'mail required'; }
  24.     else if (empty($user_json['opportunity_id'])) { $e400=true; $e400str = 'opportunity_id required'; }
  25.  
  26.     if ($e400) {
  27.         header('HTTP/1.1 400 '.$e400str);
  28.         return;
  29.     }
  30.  
  31.     // Required Fields
  32.     $gender = $user_json['gender'];
  33.     $mail = $user_json['mail'];
  34.     $opportunity_id = $user_json['opportunity_id'];
  35.  
  36.     // Optional Fields
  37.     // set PHP display precision to 20 digits
  38.     ini_set("precision", 20);
  39.     // set unique username based on UNIX time
  40.     $rand               = substr(str_replace('.', '', microtime(true)), 4, 8);
  41.     $name_rand  = 'user'.$rand;
  42.     $pass_rand  = 'pass'.$rand;
  43.     $name = isset($user_json['name']) ? $user_json['name'] : $name_rand;
  44.     $pass = isset($user_json['pass']) ? $user_json['pass'] : 'password';
  45.     $status = isset($user_json['status']) ? $user_json['status'] : 1;
  46.  
  47.     // Check to make sure no user with name or mail already exists.
  48.     if (!!user_load_by_name($name) && !!user_load_by_mail($mail)) {
  49.         header('HTTP/1.1 400 Username and email already exist');
  50.         return;
  51.     }
  52.     if (!!user_load_by_name($name)) {
  53.         header('HTTP/1.1 400 Username already exists');
  54.         return;
  55.     }
  56.     if (!!user_load_by_mail($mail)) {
  57.         header('HTTP/1.1 400 Email already exists');
  58.         return;
  59.     }
  60.  
  61.     $new_user = array(
  62.       'name' => $name,
  63.       'pass' => $pass,
  64.       'mail' => $mail,
  65.       'status' => $status,
  66.       'init' => $mail,
  67.       'field_gender' => array(
  68.         'und' => array(
  69.             0 => array(
  70.                 'value' => $gender,
  71.             ),
  72.         ),
  73.         ),
  74.       'field_opportunity_id' => array(
  75.         'und' => array(
  76.             0 => array(
  77.                 'value' => $opportunity_id,
  78.             ),
  79.         ),
  80.         ),
  81.       'roles' => array(
  82.         DRUPAL_AUTHENTICATED_RID => 'authenticated user',
  83.       ),
  84.     );
  85.  
  86.     // The first parameter is sent blank so a new user is created.
  87.     $user = user_save('', $new_user);
  88.  
  89.     /**
  90.    * Send registration email
  91.    * This should be moved into a hook_alter or other similar method.
  92.   */
  93.  
  94.   // Mail the welcome email using current language.
  95.     $account = $user;
  96.   $email = _user_mail_notify('register_admin_created', $account, 'en');
  97.   if (!empty($email)) {
  98.     watchdog('user', 'Welcome message has been sent to %name at %email.', array('%name' => $account->name, '%email' => $account->email));
  99.   }
  100.   else {
  101.     watchdog('user', 'There was an error sending welcome message to %name at %email', array('%name' => $account->name, '%email' => $account->email));
  102.   }
  103.  
  104.   // Set header to 200 and return created User object.
  105.     header('HTTP/1.1 200 User Created Successfully');
  106.     return drupal_json_output($user);
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement