/** * Add new User and Institution * @author Chaztine Blance */ public function addAction(Request $request) { $factory = $this->get('services.institution.factory'); $institution = $factory->createInstance(); $institutionUser = new InstitutionUser(); $this->get('services.contact_detail')->initializeContactDetails($institutionUser, array(ContactDetailTypes::PHONE, ContactDetailTypes::MOBILE)); $form = $this->createForm(new InstitutionUserSignUpFormType(), $institutionUser, array('include_terms_agreement' => false)); if ($request->isMethod('POST')) { $form->bind($request); if ($form->isValid()) { $postData = $request->get('institutionUserSignUp'); $institutionUser = $form->getData(); // initialize required database fields $institution->setName(uniqid()); $institution->setAddress1(''); $institution->setContactEmail(''); $institution->setContactNumber(''); $institution->setDescription(''); $institution->setLogo(null); $institution->setCoordinates(''); $institution->setType(trim($postData['type'])); /* FIX ME! */ $institution->setWebsites(''); $institution->setStatus(InstitutionStatus::getBitValueForInactiveStatus()); $institution->setZipCode(''); $institution->setSignupStepStatus(0); // Temporary Code to mark a newly added institution as added internally. // Added By: Adelbert Silla $institution->setIsFromInternalAdmin(1); $factory->save($institution); // create Institution user $institutionUser = new InstitutionUser(); $institutionUser->setEmail($form->get('email')->getData()); $institutionUser->setFirstName($institution->getName()); $institutionUser->setLastName('Admin'); $institutionUser->setPassword(SecurityHelper::hash_sha256($form->get('password')->getData())); $institutionUser->setInstitution($institution); $institutionUser->setStatus(SiteUser::STATUS_ACTIVE); $this->get('services.contact_detail')->removeInvalidContactDetails($institutionUser); // var_dump($institutionUser->getContactDetails()); exit; // dispatch event $this->get('event_dispatcher')->dispatch(InstitutionBundleEvents::ON_ADD_INSTITUTION, $this->get('events.factory')->create(InstitutionBundleEvents::ON_ADD_INSTITUTION, $institution, array('institutionUser' => $institutionUser))); return $this->redirect($this->generateUrl('admin_institution_add_details', array('institutionId' => $institution->getId()))); } else { } } return $this->render('AdminBundle:Institution:add.html.twig', array('form' => $form->createView(), 'institutionTypes' => InstitutionTypes::getFormChoices())); }
/** * Sign up page handler * * @param Request $request */ public function signUpAction(Request $request) { $error_message = ''; $success = false; // checking for security context here does not work since this is not firewalled // TODO: find a better approach // if ($this->get('session')->get('institutionId')) { // redirect to dashboard if there is an active session //return $this->redirect($this->generateUrl('institution_homepage')); // } $factory = $this->get('services.institution.factory'); $institution = $factory->createInstance(); $institutionUser = new InstitutionUser(); $this->get('services.contact_detail')->initializeContactDetails($institutionUser, array(ContactDetailTypes::PHONE, ContactDetailTypes::MOBILE)); $form = $this->createForm(new InstitutionUserSignUpFormType(), $institutionUser); if ($request->isMethod('POST')) { $form->bind($request); if ($form->isValid()) { $postData = $request->get('institutionUserSignUp'); $institutionUser = $form->getData(); // initialize required database fields $institution->setName(uniqid()); $institution->setAddress1(''); $institution->setContactEmail(''); $institution->setContactNumber(''); $institution->setDescription(''); $institution->setCoordinates(''); $institution->setType(trim($postData['type'])); /* FIX ME! */ $institution->setState(null); $institution->setWebsites(''); $institution->setStatus(InstitutionStatus::getBitValueForInactiveStatus()); $institution->setZipCode(''); $institution->setSignupStepStatus(1); // this is always the first step $factory->save($institution); $institutionUserService = $this->get('services.institution_user'); // create Institution user $institutionUser->setEmail($form->get('email')->getData()); $institutionUser->setFirstName($form->get('firstName')->getData()); $institutionUser->setLastName($form->get('lastName')->getData()); $institutionUser->setContactNumber(''); $institutionUser->setPassword($institutionUserService->encryptPassword($form->get('password')->getData())); $institutionUser->setJobTitle($form->get('jobTitle')->getData()); $institutionUser->setInstitution($institution); $institutionUser->setStatus(SiteUser::STATUS_ACTIVE); $this->get('services.contact_detail')->removeInvalidContactDetails($institutionUser); // dispatch event $this->get('event_dispatcher')->dispatch(InstitutionBundleEvents::ON_ADD_INSTITUTION, $this->get('events.factory')->create(InstitutionBundleEvents::ON_ADD_INSTITUTION, $institution, array('institutionUser' => $institutionUser))); // auto login $roles = $institutionUserService->getUserRolesForSecurityToken($institutionUser); $securityToken = new UsernamePasswordToken($institutionUser, $institutionUser->getPassword(), 'institution_secured_area', $roles); $this->get('session')->set('_security_institution_secured_area', \serialize($securityToken)); $this->get('security.context')->setToken($securityToken); $institutionUserService->setSessionVariables($institutionUser); // commented out due to duplicate messages $request->getSession()->setFlash('callout', ""); return $this->redirect($this->generateUrl('institution_signup_setup_profile')); } else { $request->getSession()->setFlash('error', "We need you to correct some of your input. Please check the fields in red."); } } return $this->render('InstitutionBundle:SignUp:signUp.html.twig', array('form' => $form->createView(), 'institutionTypes' => InstitutionTypes::getFormChoices())); }