Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- HTTP: POST
- Returns: Created User object upon successful registration.
- */
- function agfe_api_register_callback() {
- // Validate the request is a POST and return proper response code on failure.
- if (_isAuthenticated() == false) {
- header('HTTP/1.1 401 Unauthorized');
- return;
- }
- if ($_SERVER['REQUEST_METHOD'] != 'POST'){
- header('HTTP/1.1 405 Not Post');
- return;
- }
- // {"name": "John Doe","mail": "testaddress@devetry.com","gender":"Male"}
- // Receive stream contents (body) of POST request in JSON format.
- $received_data = file_get_contents("php://input", TRUE);
- $user_json = drupal_json_decode($received_data, TRUE);
- // Send Error 400 response if required fields missing
- if (empty($user_json['gender'])) { $e400=true; $e400str = 'gender required'; }
- else if (empty($user_json['mail'])) { $e400=true; $e400str = 'mail required'; }
- else if (empty($user_json['opportunity_id'])) { $e400=true; $e400str = 'opportunity_id required'; }
- if ($e400) {
- header('HTTP/1.1 400 '.$e400str);
- return;
- }
- // Required Fields
- $gender = $user_json['gender'];
- $mail = $user_json['mail'];
- $opportunity_id = $user_json['opportunity_id'];
- // Optional Fields
- // set PHP display precision to 20 digits
- ini_set("precision", 20);
- // set unique username based on UNIX time
- $rand = substr(str_replace('.', '', microtime(true)), 4, 8);
- $name_rand = 'user'.$rand;
- $pass_rand = 'pass'.$rand;
- $name = isset($user_json['name']) ? $user_json['name'] : $name_rand;
- $pass = isset($user_json['pass']) ? $user_json['pass'] : 'password';
- $status = isset($user_json['status']) ? $user_json['status'] : 1;
- // Check to make sure no user with name or mail already exists.
- if (!!user_load_by_name($name) && !!user_load_by_mail($mail)) {
- header('HTTP/1.1 400 Username and email already exist');
- return;
- }
- if (!!user_load_by_name($name)) {
- header('HTTP/1.1 400 Username already exists');
- return;
- }
- if (!!user_load_by_mail($mail)) {
- header('HTTP/1.1 400 Email already exists');
- return;
- }
- $new_user = array(
- 'name' => $name,
- 'pass' => $pass,
- 'mail' => $mail,
- 'status' => $status,
- 'init' => $mail,
- 'field_gender' => array(
- 'und' => array(
- 0 => array(
- 'value' => $gender,
- ),
- ),
- ),
- 'field_opportunity_id' => array(
- 'und' => array(
- 0 => array(
- 'value' => $opportunity_id,
- ),
- ),
- ),
- 'roles' => array(
- DRUPAL_AUTHENTICATED_RID => 'authenticated user',
- ),
- );
- // The first parameter is sent blank so a new user is created.
- $user = user_save('', $new_user);
- /**
- * Send registration email
- * This should be moved into a hook_alter or other similar method.
- */
- // Mail the welcome email using current language.
- $account = $user;
- $email = _user_mail_notify('register_admin_created', $account, 'en');
- if (!empty($email)) {
- watchdog('user', 'Welcome message has been sent to %name at %email.', array('%name' => $account->name, '%email' => $account->email));
- }
- else {
- watchdog('user', 'There was an error sending welcome message to %name at %email', array('%name' => $account->name, '%email' => $account->email));
- }
- // Set header to 200 and return created User object.
- header('HTTP/1.1 200 User Created Successfully');
- return drupal_json_output($user);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement