/** * @Route("/users/registration", name="_users_registration") * @Method("POST") * * @ApiDoc( * deprecated=TRUE, * description = "no longer used. Was used to create users with very limited data.", * section="Users", * statusCodes = { * 201 = "User added to the database.", * 403 = "Returned when parameters used for registration are not valid." * }, * parameters = { * {"name" = "active", "dataType"="boolean", "required"=true, "format"="true/false","description"="User is active or disabled."}, * {"name" = "username", "dataType"="text", "required"=true, "description"="username description"}, * {"name" = "lastname", "dataType"="text", "required"=true, "description"="lastname description"}, * {"name" = "firstname", "dataType"="text", "required"=true, "description"="firstname description"}, * {"name" = "email", "dataType"="text", "required"=true, "description"="email description"}, * {"name" = "phone", "dataType"="text", "required"=true, "description"="phone description"}, * {"name" = "title", "dataType"="text", "required"=true, "description"="title description"}, * {"name" = "office", "dataType"="text", "required"=true, "description"="office description"}, * {"name" = "profile_picture", "dataType"="text", "required"=true, "description"="profile_picture description"}, * {"name" = "role_id", "dataType"="text", "required"=true, "description"="role for this user (1 , 2 or 3 )"}, * {"name" = "password", "dataType"="text", "required"=true, "description"="password description"}, * * * } * ) * */ public function postUsersAction(Request $request) { $response = new Response(); $createDate = new \DateTime(); $createDate->setTimezone(self::timezoneUTC()); // Create User instance and set property values: $user = new User(); $user->setEnabled($request->get('active')); $user->setUsername($request->get('username')); $user->setLastname($request->get('lastname')); $user->setFirstname($request->get('firstname')); $user->setEmail($request->get('email')); $user->setPhone($request->get('phone')); $user->setTitle($request->get('title')); $user->setOffice($request->get('office')); $user->setProfilepicture($request->get('profile_picture')); $user->setPassword($request->get('password')); if ($request->get('role_id') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field role_id must have a value!'))); return $response; } $role_id = $request->get('role_id'); $role = $this->getDoctrine()->getRepository('UserBundle:Role')->findOneById($role_id); if (!$role) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'You provided an invalid role id / No role_id provided.'))); return $response; } if ($request->get('active') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field active must have a value!'))); return $response; } if ($request->get('username') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field username must have a value!'))); return $response; } $username_already_exists = $this->getDoctrine()->getRepository('UserBundle:User')->findOneByUsername($request->get('username')); if ($username_already_exists) { $response->setStatusCode(400); $response->setContent(json_encode(array('success' => false, 'message' => 'The username provided is already in use.'))); return $response; } if ($request->get('lastname') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field lastname must have a value!'))); return $response; } if ($request->get('firstname') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field firstname must have a value!'))); return $response; } if ($request->get('email') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field email must have a value!'))); return $response; } if ($request->get('phone') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field phone must have a value!'))); return $response; } if ($request->get('title') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field title must have a value!'))); return $response; } if ($request->get('office') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field office must have a value!'))); return $response; } if ($request->get('profile_picture') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field profile_picture must have a value!'))); return $response; } if ($request->get('password') == null) { $response->setStatusCode(403); $response->setContent(json_encode(array('success' => false, 'message' => 'Field password must have a value!'))); return $response; } $role_name = $role->getName(); $user->addRole($role_name); $user->setCreatedAt($createDate); $user->setUpdatedAt($createDate); // $response->headers->set('Content-Type', 'application/json'); // $serializer = $this->get('jms_serializer'); // Get validator service to check for errors: $validator = $this->get('validator'); $errors = $validator->validate($user); //// //IN ORDER TO BE A OK RESPONSE < HERE WE MUST RETURN A RESPONSE NOT A VIEW if (count($errors) > 0) { // Return $errors in JSON format: $view = $this->view($errors, 400); return $this->handleView($view); } // End of IF errors check. $user->setPassword(md5($request->request->get('password'))); $key = Uuid::uuid4()->toString(); $user->setApiKey($key); $em = $this->getDoctrine()->getManager(); $em->persist($user); ///SET THE USER TO HAVE USERACCESS TO TEMP_CLIENT $temp_client = $this->getDoctrine()->getRepository('CampaignBundle:Client')->findOneByName('temp_client'); $global_region = $this->getDoctrine()->getRepository('CampaignBundle:Region')->findOneByName('Global'); $temp_useraccess = new Useraccess(); $temp_useraccess->setClient($temp_client); $temp_useraccess->setRegion($global_region); $temp_useraccess->setAllCountries(true); $temp_useraccess->setUser($user); $em->persist($temp_useraccess); //END SET USER FOR USERACCESS $em->flush(); $response->setStatusCode(201); $response->setContent(json_encode(array('success' => true, 'message' => 'User added to the database.'))); return $response; }