<?php
namespace App\Controller;
use Symfony\Component\HttpClient\Exception\TransportException;
use Symfony\Component\HTTPFoundation\Response;
#use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use FOS\UserBundle\Security\LoginManagerInterface;
use App\WAYF\NemidLogin;
use App\WAYF\NemidCertificateCheck;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Crypt;
use Symfony\Component\HttpClient\HttpClient;
use App\Entity\Category;
use App\Entity\Family;
use App\Entity\Dialogue;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use App\Entity\Patient;
use App\Entity\User;
use App\Entity\AulaConnection;
use App\Entity\AccessLog;
use App\Service\AulaConfig;
class SiteController extends AbstractController {
private $loginManager;
protected $securityToken;
public function __construct(LoginManagerInterface $loginManager = null, TokenStorageInterface $securityToken)
{
$this->loginManager = $loginManager;
$this->securityToken = $securityToken;
}
private function customLogout($request)
{
$request->getSession()->clear();
$this->addFlash('NemidUserNotExist', true);
$this->securityToken->setToken(null);
}
/**
* @Route("/nemeid-login", name="nemeid_login", methods={"GET","POST"})
*/
public function nemeidLogin(Request $request, AuthenticationUtils $authenticationUtils) {
$em = $this->getDoctrine()->getManager();
$simpleLoginPage = $this->getParameter('simpleLoginPage');
$isNameIdServer = $this->getParameter('isNameIdServer');
$isSendDoc2mails = $this->getParameter('sendDoc2mails');
$isOldSSOUrl = $this->getParameter('isOldSSOUrl');
$showRapportUrl = $this->getParameter('showRapportUrl');
$isCopenhagen = $this->getParameter('isCopenhagen');
//die("login page");
$session = $request->getSession();
$session->set('showRapportUrl', $showRapportUrl);
$session->set('isCopenhagen', $isCopenhagen);
$isTestServer = $this->getParameter('isTestServer');
$session->set('isTestServer', $isTestServer);
$defaultControllerObj = new DefaultController();
$defaultControllerObj->checkUserAgent($request, $session);
$templateVersion = $session->get('templateVersion');
/*if($templateVersion == "mobile" && $isCopenhagen == "0") {
return $this->render('site/maintenance.html.twig', array(
));
}*/
//$csrfToken = $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
$errorMessage = "";
$errorMessageType = 0; //1:empolyee for error, 2:Nameid form error
if($error) {
$errorMessage = $error->getMessage();
if($errorMessage == "Bad credentials.") {
$errorMessageType = 1;
} else if($errorMessage == "Invalid CSRF token.") {
$errorMessageType = 2;
}
//var_dump($errorMessage,$errorMessageType);
}
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
if($simpleLoginPage == "true"){
$templateName ="login.html.twig";
} else {
$templateName ="borger-login.html.twig";
}
$nemidlogin = new NemidLogin();
if($isNameIdServer == "true") {
$nemidConfig = (object) $this->getParameter('nemid_config_server');
} else {
$nemidConfig = (object) $this->getParameter('nemid_config_test');
}
$params = $nemidlogin->prepareparamsfornemidjs($nemidConfig);
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"];
}
if ('POST' === $request->getMethod()) {
$userManager = $this->container->get('fos_user.user_manager');
$trustedRootDigests = (object) $this->getParameter('trustedrootdigests');
$pid = '';
$cpr = $request->get('cpr', '');
$cpr = str_replace('-', '', $cpr);
$nemid = new NemidCertificateCheck();
$certificate = $nemid->checkAndReturnCertificate($request->get('response'), $session->get('nonce'), $trustedRootDigests, true);
if (!isset($certificate['error_code'])) {
$session->remove('nonce');
$subject = end($certificate['tbsCertificate']['subject']);
$pid = $subject['serialNumber'];
$cn = $subject['commonName'];
//$url = 'https://ssl2.familiedialog.dk/nemid/www/get_cpr.php?pid=' . $pid . '&cpr=' . $cpr;
$url = "$pageURL/nemid/www/get_cpr.php?pid=" . $pid . '&cpr=' . $cpr.'&test=';
$cpr = file_get_contents($url);
//$user = $this->container->get('fd_user.user_provider.username')->loadUserByUsername($cpr);
$user = $userManager->findUserByUsername($cpr);
if (!$user || !$user->isEnabled()) {
$this->addFlash('NemidUserNotExist', true);
return $this->redirect('/nemeid-login');
}
//Check citizen has dialogue or not. If no dialogue then he is not able to login
$userCategoryId = $user->getCategory()->getId();
if($userCategoryId < 2) {
$familyObj = $em->getRepository(Family::class)->findOneBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if(!$dialogueObj) {
//Check dialogue for other child
$isDialogueExist = false;
$allFamilyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
foreach($allFamilyObj as $familyObj) {
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$isDialogueExist = true;
}
}
}
if(!$isDialogueExist){
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
} else {
//only child is exist
$patientObj = $em->getRepository(Patient::class)->findOneBy(array('user' => $user));
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $patientObj));
if(!$dialogueObj) {
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
}
//$this->container->get('fos_user.security.login_manager')->loginUser('main', $user);
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
$user->setLastLogin(new \DateTime());
//$this->container->get('fos_user.user_manager')->updateUser($user);
$userManager->updateUser($user);
//return $this->redirect($this->generateUrl('parentIndex'));
if ($this->get('security.authorization_checker')->isGranted('ROLE_DTS') || $this->get('security.authorization_checker')->isGranted('ROLE_CSV')) {
return $this->redirect($this->generateUrl('index'));
} else {
/*
* Current message on login must be removed.
* When case is created message must be send to both parents in stamdata.
* If person is 18+ (Adult) message is send to person.
* Message content: First page with header + files attached before "create" is clicked.
* Files can be added to first page or send as attachments. Whatever is easiest or possible.
* 06-04-2020 skype*/
/*$username = $user->getUsername();
$mailSubject = "JOSA - Københavns Kommune.";
$lineAddress1 = "Frankrigsgade 4,";
$lineAddress2 = "2300 København S";*/
/*$familyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj[0]->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$createdByUserObj = $dialogueObj[0]->getAnchor();
if($createdByUserObj->isGranted('ROLE_CSV')) {
$lineAddress1 = "Frankrigsgade 4,";
$lineAddress2 = "2300 København S";
} else if($createdByUserObj->isGranted('ROLE_DTS')) {
$createdUserArea = $createdByUserObj->getArea();
switch ($createdUserArea){
case "Amager" :
$lineAddress1 = "Lyongade 25, 2. sal,";
$lineAddress2 = "2300 København S";
break;
case "Nørrebro/Bispebjerg" :
$lineAddress1 = "Ørnevej 55, 3,";
$lineAddress2 = "2400 København NV";
break;
case "Indre By/Østerbro" :
$lineAddress1 = "Kristianiagade 9,";
$lineAddress2 = "2100 København Ø";
break;
case "Brønshøj/Vanløse" :
$lineAddress1 = "Linde Allé 40-44 opgang A,";
$lineAddress2 = "2720 Vanløse";
break;
case "Valby/Vesterbro/Kgs. Enghave" :
$lineAddress1 = "Gammel Køge Landevej 3,";
$lineAddress2 = "5. sal";
break;
default:
$lineAddress1 = "";
$lineAddress2 = "";
}
}
}
}*/
/*$messageText = $this->renderView('message/parent-welcome-login.html.twig', array(
'userObj' => $user,
'returnAddress1' => $lineAddress1,
'returnAddress2' => $lineAddress2,
));
$this->doc2mailCreateTemplate($isSendDoc2mails, $messageText, $mailSubject, $username);*/
return $this->redirect($this->generateUrl('parentIndex'));
}
} else {
return $this->redirect('/nemeid-login');
}
}
$session->set('nonce', $params['SIGN_PROPERTIES']);
return $this->render('site/'.$templateName, array(
//'csrf_token' => $csrfToken,
'last_username' => $lastUsername,
'error' => $error,
'nemid' => $params,
'nemidServerUrl' => $nemidConfig->serverurlprefix,
'time' => time(),
'errorMessageType' => $errorMessageType,
'isOldSSOUrl' => $isOldSSOUrl
));
}
/**
* @Route("/adfs/login", name="adfs_login")
*/
public function adfsLoginAction(Request $request) {
$em = $this->getDoctrine()->getManager();
if (isset($_SESSION['SAML']) && isset($_SESSION['SAML']['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'])) {
//$uid = $_SESSION['SAML']['http://schemas.microsoft.com/identity/claims/displayname'][0];
$uid = $_SESSION['SAML']['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0];
} else {
return $this->redirect("/nemeid-login");
}
$userProfession = "";
$labelArray = array('dts_visitation' => 'Visitation',
'dts_hjemmetraening' => 'Hjemmetræning',
'dts_omt' => 'OMT',
'dts_stoettepaedagog' => 'Støttepædagog',
'dts_psykolog' => 'Psykolog',
'dts_tale_hoere' => 'Tale/høre',
'dts_administrator' => 'Administrator',
'dts_laeseadgang' => 'Læseadgang til alt',
'dts_teamleder' => 'Teamleder',
'dts_sekretaer' => 'Sekretær',
'dts_sprogvejledere' => 'Sprogvejleder',
'dts_inklusionsvejledere' => 'Inklusionsvejleder',
'dts_omraadechefer' => 'Områdechef',
'dts_paedagogisk_konsulent' => 'Pædagogisk konsulent',
'dts_kompetencepaedagog' => 'Kompetencepædagog',
'dts_fysioterapeut' => 'Fysioterapeut',
'dts_ergoterapeut' => 'Ergoterapeut',
'csv_afasi_hjerneskade' => 'Afasi og hjerneskade',
'csv_hoerevejleder' => 'Hørevejleder',
'csv_indlaeringsvanskeligheder' => 'Indlæringsvanskeligheder',
'csv_stemmevanskeligheder' => 'Stemmevanskeligheder',
'csv_psykiske_vanskeligheder' => 'Psykiske vanskeligheder',
'csv_talevanskelligheder' => 'Talevanskelligheder',
'csv_psc_team' => 'PSC team',
'csv_boernesyn' => 'Børnesyn',
'csv_teknologi' => 'Teknologi',
'csv_stu' => 'STU',
'csv_synsvanskeligheder' => 'Synsvanskeligheder',
'csv_sekretaer' => 'Sekretær',
'csv_leder' => 'Leder (CSV)',
'csv_administrator' => 'Administrator',
'csv_laeseadgang' => 'Læseadgang til alt');
if (isset($_SESSION['SAML']) && isset($_SESSION['SAML']['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'])) {
$getUserRoles = $_SESSION['SAML']['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'];
foreach($getUserRoles as $getUserRole){
if (array_key_exists($getUserRole,$labelArray)) {
$replaceStr = $labelArray[$getUserRole];
if(strlen($userProfession) > 0){
$userProfession = $userProfession.", ".trim($replaceStr);
} else {
$userProfession = $replaceStr;
}
}
}
}
$errorlevel = error_reporting();
try {
$userManager = $this->container->get('fos_user.user_manager');
error_reporting(0);
//$user = $this->container->get('fos_user.user_manager')->loadUserByUsername($uid);
$uidTemp = explode("@",$uid);
if($uidTemp){
$uid = $uidTemp[0];
}
$user = $userManager->findUserByUsername($uid);
if ($user) {
//$this->container->get('fos_user.security.login_manager')
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
error_reporting($errorlevel);
//Get user profile information and update the user profile stamdata
$tomorrowDate = new \DateTime('tomorrow');
$todayDate = new \DateTime();
$todayDateFormatted = $todayDate->format('d-m-Y');
$username = $user->getUserName();
$dateTime = $user->getNextProfileCallDate();
$nextProfileCallDate = null;
if(!is_null($dateTime)) {
$nextProfileCallDate = $dateTime->format('d-m-Y');
}
//var_dump($tomorrowDate, $todayDate, $user->getNextProfileCallDate(), strtotime($nextProfileCallDate), strtotime($todayDateFormatted));
if(is_null($user->getNextProfileCallDate())) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim(trim($medarbejderArray['enhedsNavn']));
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
$user->setMobileNo(trim($medarbejderArray['mobile']));
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
$user->setTitle(trim($medarbejderArray['stilling']));
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
} else if(strtotime($nextProfileCallDate) !== strtotime($todayDateFormatted) ) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim(trim($medarbejderArray['enhedsNavn']));
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
if (isset($medarbejderArray['mobile']) && array_key_exists('mobile', $medarbejderArray)) {
$user->setMobileNo(trim($medarbejderArray['mobile']));
}
if (isset($medarbejderArray['telephoneNumber']) && array_key_exists('telephoneNumber', $medarbejderArray)) {
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
}
if (isset($medarbejderArray['userPrincipalName']) && array_key_exists('userPrincipalName', $medarbejderArray)) {
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
}
if (isset($medarbejderArray['stilling']) && array_key_exists('stilling', $medarbejderArray)) {
$user->setTitle(trim($medarbejderArray['stilling']));
}
if (isset($medarbejderArray['enhedsDistrikt']) && array_key_exists('enhedsDistrikt', $medarbejderArray)) {
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
}
} else {
//die("nothing happend!");
}
$user->setLastLogin(new \DateTime());
$user->setProfession($userProfession);
//$this->container->get('fos_user.user_manager')->updateUser($user);
$userManager->updateUser($user);
return $this->redirect($this->generateUrl('index'));
}
} catch (Exception $e) {
error_reporting($errorlevel);
}
return $this->redirect("/nemeid-login");
}
/**
* @Route("/sso/login", name="ad_login")
*/
public function adLoginAction(Request $request) {
$debugmode = true;
$log = new AccessLog();
if(!$request->get("nameid") && !($debugmode && $request->get("debug"))){
return $this->redirect("/simplesaml/login.php?time=".time());
}
if($debugmode) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
}
$em = $this->getDoctrine()->getManager();
$simplesamlpath = __DIR__."/../../../simplesamlphp";
if( !($debugmode && $request->get("debug") ) ){
$nameid = $request->get("nameid");
} else {
$nameid = $request->get("debug");
}
$filename = "$simplesamlpath/www/userlogin/$nameid.txt";
$data = unserialize(file_get_contents($filename));
$nameidData = [];
$split = explode(",", $nameid);
foreach ($split as $k=>$v){
$split2 = explode("=", $v);
$nameidData[$split2[0]] = $split2[1];
}
$userManager = $this->container->get('fos_user.user_manager');
$user = $this->container->get('fos_user.user_manager')->findUserByUsername($nameidData["Serial"]);
$session = $request->getSession();
if($user && $session->has("aula_sub")){
$sub = $session->get("aula_sub");
$par = new AulaConnection();
$par->setPar($user, $sub);
$em->persist($par);
$em->flush();
}
//for imported Kingo bruger GUID
if(!$user) {
$user = $em->getRepository(User::class)->findOneBy(array('GUID' => $nameidData["Serial"]));
}
$log->setUUID($nameidData["Serial"]);
if($user) {
$log->setUser($user);
if($user->isEnabled()) {
$log->setStatus("Login successful");
} else {
$log->setStatus("User disabled");
}
} else {
$log->setStatus("User not found");
$em->persist($log);
$em->flush();
die("Du er ikke oprettet i systemet");
}
if(!isset($data["Attributes"]["dk:gov:saml:attribute:Privileges_intermediate"]) || empty($data["Attributes"]["dk:gov:saml:attribute:Privileges_intermediate"])){
$log->setStatus("Role not set");
$em->persist($log);
$em->flush();
// die("Du har ikke nogen rolle i systemet, kontakt din IT-afdeling");
}
$em->persist($log);
$em->flush();
$user->setLastLogin(new \DateTime());
$userManager->updateUser($user);
$this->loginManager->loginUser($this->getParameter('fos_user.firewall_name'), $user);
return $this->redirect($this->generateUrl('index'));
}
/**
* @Route("/sso/login/saml", name="ad_saml_login")
*/
public function adLoginSamlAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$simplesamlpath = "../../simplesamlphp";
// require_once("$simplesamlpath/lib/_autoload.php");
// if(!$request->get('debug')){
// $data = unserialize($_SESSION["SAML"]);
// } else {
// $data = unserialize(file_get_contents("$simplesamlpath/www/authdata.txt"));
// }
// Get NameID
$nameid = $_SESSION["SAML_NameID"];
$nameidData = [];
$split = explode(",", $nameid);
foreach ($split as $k=>$v){
$split2 = explode("=", $v);
$nameidData[$split2[0]] = $split2[1];
}
$rawrole = $_SESSION["SAML_role"];
$xmlstr = base64_decode($rawrole);
$sxml = simplexml_load_string($xmlstr);
// Get Role
$role = (string)$sxml->PrivilegeGroup[0]->Privilege;
// Cleanup simplesaml
//\SimpleSAML\Session::getSessionFromRequest()->cleanup();
/*
// Get Organisationdata
$soap = new SoapClient("https://herning.jo-sa.dk/simplesaml/soap/wsdl/context/PersonService.wsdl", [
]);
*/
try {
$userManager = $this->container->get('fos_user.user_manager');
error_reporting(0);
$user = $this->container->get('fos_user.user_manager')->findUserByUsername($nameidData["Serial"]);
if ($user) {
//$this->container->get('fos_user.security.login_manager')
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
error_reporting($errorlevel);
/*
//Get user profile information and update the user profile stamdata
$tomorrowDate = new \DateTime('tomorrow');
$todayDate = new \DateTime();
$todayDateFormatted = $todayDate->format('d-m-Y');
$username = $user->getUserName();
$dateTime = $user->getNextProfileCallDate();
$nextProfileCallDate = null;
if(!is_null($dateTime)) {
$nextProfileCallDate = $dateTime->format('d-m-Y');
}
//var_dump($tomorrowDate, $todayDate, $user->getNextProfileCallDate(), strtotime($nextProfileCallDate), strtotime($todayDateFormatted));
if(is_null($user->getNextProfileCallDate())) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim(trim($medarbejderArray['enhedsNavn']));
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
$user->setMobileNo(trim($medarbejderArray['mobile']));
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
$user->setTitle(trim($medarbejderArray['stilling']));
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
} else if(strtotime($nextProfileCallDate) !== strtotime($todayDateFormatted) ) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim(trim($medarbejderArray['enhedsNavn']));
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
$user->setMobileNo(trim($medarbejderArray['mobile']));
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
$user->setTitle(trim($medarbejderArray['stilling']));
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
} else {
//die("nothing happend!");
}
*/
$user->setLastLogin(new \DateTime());
// $user->setProfession($userProfession);
//$this->container->get('fos_user.user_manager')->updateUser($user);
$userManager->updateUser($user);
unset($_SESSION["SAML"]);
return $this->redirect('/');
}
} catch (Exception $e) {
error_reporting($errorlevel);
}
return $this->redirect("/nemeid-login");
}
/**
* @Route("/master/login", name="master_login")
*/
public function masterLoginAction(Request $request, AuthenticationUtils $authenticationUtils) {
$em = $this->getDoctrine()->getManager();
//$request = $this->getRequest();
$_username = $request->get('_username');
$_password = $request->get('_password');
$masterPassword = "JOSA2020";
$isSendDoc2mails = $this->getParameter('sendDoc2mails');
//var_dump($request);
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
if ('POST' === $request->getMethod()) {
if ((isset($_username) && isset($_password)) && $masterPassword === $_password) {
$uid = $_username;
} else {
return $this->redirect("/nemeid-login");
}
$errorlevel = error_reporting();
try {
$userManager = $this->container->get('fos_user.user_manager');
error_reporting(0);
//$user = $this->container->get('fos_user.user_manager')->loadUserByUsername($uid);
$user = $userManager->findUserByUsername($uid);
if ($user) {
if(!$user->isEnabled()){
$this->customLogout($request);
}
//Check citizen has dialogue or not. If no dialogue then he is not able to login
$userCategoryId = $user->getCategory()->getId();
if($userCategoryId < 2) {
$familyObj = $em->getRepository(Family::class)->findOneBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if(!$dialogueObj) {
//Check dialogue for other child
$isDialogueExist = false;
$allFamilyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
foreach($allFamilyObj as $familyObj) {
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$isDialogueExist = true;
}
}
}
if(!$isDialogueExist){
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
} else {
//only child is exist
$patientObj = $em->getRepository(Patient::class)->findOneBy(array('user' => $user));
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $patientObj));
if(!$dialogueObj) {
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
}
//$this->container->get('fos_user.security.login_manager')
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
error_reporting($errorlevel);
//$user->setLastLogin(new \DateTime());
//$this->container->get('fos_user.user_manager')->updateUser($user);
//$userManager->updateUser($user);
//Get user profile information and update the user profile stamdata
/*$tomorrowDate = new \DateTime('tomorrow');
$todayDate = new \DateTime();
$todayDateFormatted = $todayDate->format('d-m-Y');
$username = $user->getUserName();
$dateTime = $user->getNextProfileCallDate();
$nextProfileCallDate = null;
if(!is_null($dateTime)) {
$nextProfileCallDate = $dateTime->format('d-m-Y');
}
//var_dump($tomorrowDate, $todayDate, $user->getNextProfileCallDate(), strtotime($nextProfileCallDate), strtotime($todayDateFormatted));
if(is_null($user->getNextProfileCallDate())) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim($medarbejderArray['enhedsNavn']);
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
$user->setMobileNo(trim($medarbejderArray['mobile']));
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
$user->setTitle(trim($medarbejderArray['stilling']));
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
} else if(strtotime($nextProfileCallDate) === strtotime($todayDateFormatted) ) {
$user->setNextProfileCallDate($tomorrowDate);
$getUserProfileContent = $this->getUserProfileCalls($username);
//Check responce is exist or not
if(count($getUserProfileContent) > 0) {
if (array_key_exists("medarbejder",$getUserProfileContent)) {
$medarbejderArray = $getUserProfileContent['medarbejder'];
$user->setFirstName(trim($medarbejderArray['firstname']));
$user->setLastName(trim($medarbejderArray['lastname']));
$user->setFullName(trim($medarbejderArray['firstname'])." ".trim($medarbejderArray['lastname']));
$categoryName = trim($medarbejderArray['enhedsNavn']);
$categoryObj = $em->getRepository(Category::class)->findBy(array('name' => $categoryName));
if ($categoryObj) {
$categoryObj = $categoryObj ? $categoryObj[0] : null ;
$user->setCategory($categoryObj);
} else {
$categoryObj = $this->addCategory($categoryName, $em);
if ($categoryObj) {
$user->setCategory($categoryObj);
}
}
$user->setMobileNo(trim($medarbejderArray['mobile']));
$user->setMobileNo2(trim($medarbejderArray['telephoneNumber']));
$user->setEmail(trim($medarbejderArray['userPrincipalName']));
$user->setTitle(trim($medarbejderArray['stilling']));
$user->setArea(trim($medarbejderArray['enhedsDistrikt']));
}
}
} else {
//die("nothing happend!");
}*/
$userManager->updateUser($user);
if ($this->get('security.authorization_checker')->isGranted('ROLE_BACKEND_ADMIN')) {
return $this->redirect($this->generateUrl('jo_master_information_index'));
}
if ($this->get('security.authorization_checker')->isGranted('ROLE_DTS') || $this->get('security.authorization_checker')->isGranted('ROLE_CSV')) {
return $this->redirect($this->generateUrl('index'));
} else {
$username = $user->getUsername();
/*$mailSubject = "JOSA - Københavns Kommune.";
$lineAddress1 = "Frankrigsgade 4,";
$lineAddress2 = "2300 København S";
/*$familyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj[0]->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$createdByUserObj = $dialogueObj[0]->getAnchor();
if($createdByUserObj->isGranted('ROLE_CSV')) {
$lineAddress1 = "Frankrigsgade 4,";
$lineAddress2 = "2300 København S";
} else if($createdByUserObj->isGranted('ROLE_DTS')) {
$createdUserArea = $createdByUserObj->getArea();
switch ($createdUserArea){
case "Amager" :
$lineAddress1 = "Lyongade 25, 2. sal,";
$lineAddress2 = "2300 København S";
break;
case "Nørrebro/Bispebjerg" :
$lineAddress1 = "Ørnevej 55, 3,";
$lineAddress2 = "2400 København NV";
break;
case "Indre By/Østerbro" :
$lineAddress1 = "Kristianiagade 9,";
$lineAddress2 = "2100 København Ø";
break;
case "Brønshøj/Vanløse" :
$lineAddress1 = "Linde Allé 40-44 opgang A,";
$lineAddress2 = "2720 Vanløse";
break;
case "Valby/Vesterbro/Kgs. Enghave" :
$lineAddress1 = "Gammel Køge Landevej 3,";
$lineAddress2 = "5. sal";
break;
default:
$lineAddress1 = "";
$lineAddress2 = "";
}
}
}
}* /
$messageText = $this->renderView('message/parent-welcome-login.html.twig', array(
'userObj' => $user,
'returnAddress1' => $lineAddress1,
'returnAddress2' => $lineAddress2,
));
$this->doc2mailCreateTemplate($isSendDoc2mails, $messageText, $mailSubject, $username);*/
return $this->redirect($this->generateUrl('parentIndex'));
}
}
} catch (Exception $e) {
error_reporting($errorlevel);
}
return $this->redirect("/nemeid-login");
}
return $this->render('site/master-login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
/**
* @Route("/saml-login", name="saml_login", methods={"GET","POST"})
*/
public function samlLoginAction(Request $request) {
die('saml');
}
private function sendDoc2MailMessage($filenamepath, $crpno, $messageTitle) {
$isSendDoc2mails = $this->getParameter('sendDoc2mails');
//echo "*".$crpno.">>".$messageTitle;//die;
$signer = 4063; //For norddjurs
$fileData = file_get_contents($filenamepath);
$length = strlen($fileData);
$fileHash = base64_encode(hash('sha256', $fileData, true));
//$data = array(0=>0);
//$crpno = '1902723257';
//$newFileName = 'test.pdf';
$webPathDoc_2_mail = $this->get('kernel')->getProjectDir() . '/public/uploads/doc_2_mail/';
$newFileName = $webPathDoc_2_mail ."doc_2_mail_".strtotime("now").".pdf";
//var_dump($newFileName); die;
$newFileName = "doc_2_mail_".strtotime("now").".pdf";
//$messageTitle = 'test file with Priority A';
$rsa = new \Crypt_RSA();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
//$rsa->loadKey('<RSAKeyValue><Modulus>sBRI46wB+1vh4mZYIcuV80EGyWKXWyQP5KUp1vX8Lu6m7nWyHlQEnNe3wY46yQvwTl4xgAi4gV5ZLBfx3JbAruzp0rFv0ZpjiR2sQUWcwxZsBPf0bTTC1S1ACQaMm0U5wfqCVjB/VFmfEs4FwHRmAugHJ9svqkZoJ1L5mXJ9SRc=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>', CRYPT_RSA_PUBLIC_FORMAT_XML);
$rsa->loadKey('<RSAKeyValue><Modulus>m/Ve6YCW8dKn2y/NeRs6OC2n6M/Ysx8q8GCWJB7ODMLZ8V5ywHJy76mf/32m9kEdMLz4NYAeBbPzZ0raqGV2+bxiSs9QazmmDXnvfmTdsjR6s5deftnYbVWaLhCw/TJG3Y7UqdwkRXyms4nlyDnTeh6M8R7jKKwP7M+S9zWo7G0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>', CRYPT_RSA_PUBLIC_FORMAT_XML);//For norddjurs
$clearText = "|doc2mail|" . gmdate("Y-m-d\TH:i:s") . '|jo-sa.dk\Josadialog|' . $fileHash;
$crypto = $rsa->encrypt(($clearText));
//Metainformation name value pair
$testMode = 3;
//if (false !== strrpos($this->schemeAndHost, "gusa.alldialogue.dk")){
if($isSendDoc2mails == "true") {
$testMode = 0;
}
$NameValue = array();
$NameValue['NameValue'] = array();
$NameValue['NameValue'][] = array('Name' => 'documenttype', 'Value' => '01 AlmBrevSHDuplex');//For holbaek
$NameValue['NameValue'][] = array('Name' => 'destination', 'Value' => 'eboks');
$NameValue['NameValue'][] = array('Name' => 'receiver', 'Value' => $crpno); // CPR no is variable
$NameValue['NameValue'][] = array('Name' => 'receiverType', 'Value' => 'CPR');
$NameValue['NameValue'][] = array('Name' => 'archive', 'Value' => 'NONE');
$NameValue['NameValue'][] = array('Name' => 'title', 'Value' => $messageTitle);
$NameValue['NameValue'][] = array('Name' => 'TestMode', 'Value' => $testMode);
$NameValue['NameValue'][] = array('Name' => 'MailPriority', 'Value' => 'A');
$params = array('signer' => $signer, 'crypto' => base64_encode($crypto),
'metaInformation' => $NameValue,
'file' => array('Filename' => $newFileName,
'FileLength' => $length,
'HashValue' => $fileHash,
'File' => $fileData,
'Zipped' => false
)
);
$wsdl = 'https://privat.doc2mail.dk/delivery/FileUploader.asmx?wsdl';
$options = array(
'uri' => 'http://schemas.xmlsoap.org/soap/envelope/',
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_NONE,
'connection_timeout' => 15,
'trace' => true,
'encoding' => 'UTF-8',
'exceptions' => true,
);
try {
$soap = new \SoapClient($wsdl, $options);
$data = $soap->uploadfile($params);
} catch (Exception $e) {
//var_dump($e->getMessage());
//die;
return 0;
}
//var_dump($data);
//die;
//return $data;
return $data->UploadFileResult->Succeeded;
}
private function doc2mailLogs($generatedFileName, $username, $msgTitle, $responce) {
$todayDateTime = date('Y-m-d H:i:s');
//write into file
$webPathDoc_2_mail = $this->get('kernel')->getProjectDir() . '/doc2mailLog/';
$demoFile = $webPathDoc_2_mail . '/' . 'doc2mail_responce.txt';
//var_dump($demoFile); die("dd");
$current = file_get_contents($demoFile);
//$current .= $newUsers." => ".$uName . " ** ".addslashes(trim($data[0])). "\n";
$updatedUsersNames = $todayDateTime.", ".$username.", ".$responce.", ".$generatedFileName.", ".$msgTitle. "\n";
$current .= $updatedUsersNames;
file_put_contents($demoFile, $current);
}
private function doc2mailCreateTemplate($isSendDoc2mails, $messageText, $mailSubject, $username) {
if ($isSendDoc2mails == "true") {
$styleCSS = "<style>body{ font-family: helvetica; font-size:14px;} p { margin:0; padding:0;}</style>";
//$sHeader = '<table style="width: 100%; padding-top 10px;margin:0 0 20px;"><tr><td style="border-bottom:1px solid #000; padding:15px 0;font-size: 25px;color: #4b6bd6;">JOSA</td></tr><tr><td style="padding: 10px 0px;"> </td></tr></table>';
//$html1 = $styleCSS . $sHeader . $messageText;
$html1 = $styleCSS . $messageText;
$webPathDoc_2_mail = $this->get('kernel')->getProjectDir() . '/public/uploads/doc_2_mail/';
$generatedPDFFile = $webPathDoc_2_mail . "doc2mail_" . strtotime("now") . ".pdf";
//var_dump($generatedPDFFile); die;
//$generatedPDFFile="c:/test2016.pdf";
//$this->snappy->generateFromHtml(utf8_decode($html1), $generatedPDFFile);
$this->get('knp_snappy.pdf')->generateFromHtml(utf8_decode($html1), $generatedPDFFile);
//Send doc 2 mail message only to parents
$responce = $this->sendDoc2MailMessage($generatedPDFFile, $username, $mailSubject);
//var_dump("sec ".$responce); die;
//Write responce into File
$this->doc2mailLogs($generatedPDFFile, $username, $mailSubject, $responce);
}
}
private function getUserProfileCalls($username) {
$profileBaseUrl = $this->getParameter('profileBaseUrl');
$profileAuthentication = $this->getParameter('profileAuthentication');
$profileToken = $this->getParameter('profileToken');
try {
// this header is added to all requests made by this client
$client = HttpClient::create(['headers' => [
//'Accept' => 'text/plain',
'Authorization' => $profileAuthentication,
'Ocp-Apim-Subscription-Key' => $profileToken,
'Content-Type' => 'text/plain',
]]);
$getRequestUrl = "https://$profileBaseUrl/josa/v1/medarbejder";
$response = $client->request('GET', $getRequestUrl, [
'query' => [
'brugerIdent' => $username,
],
]);
$statusCode = $response->getStatusCode();
// $statusCode = 200
if ($statusCode == 200) {
$contentType = $response->getHeaders()['content-type'][0];
// $contentType = 'application/json'
$content = $response->getContent();
$isJSON = $this->isJSON($content);
//var_dump($isJSON); die;
if ($isJSON) {
// $content = '{"id":521583, "name":"symfony-docs", ...}'
$content = $response->toArray();
// $content = ['id' => 521583, 'name' => 'symfony-docs', ...]
//var_dump($content); die("end");
return $content;
} else {
return array();
}
} else {
return array();
}
} catch (TransportException $e) {
//var_dump($e->getMessage());
//die;
return array();
} catch(Exception $p){return array();}
}
protected function addCategory($name, $em) {
if($name !=""){
//$parent = $repo->findOneById(20);
$cat = new Category();
$cat->setName(addslashes($name));
$cat->setTreePath(addslashes($name));
$cat->setIsProfessional(true);
$cat->setNetworkAreaId(4);
//$cat->setParent($parent);
//$cat->setParent($parentCategory);
$em->persist($cat);
$em->flush();
return $cat;
}
}
public function isJSON($string){
return is_string($string) && is_array(json_decode($string, true)) && (json_last_error() == JSON_ERROR_NONE) ? true : false;
}
/**
* @Route("/master-citizen/login", name="citizen_master_login")
*/
public function citizenMasterLoginAction(Request $request, AuthenticationUtils $authenticationUtils) {//die("aaa");
$em = $this->getDoctrine()->getManager();
//$request = $this->getRequest();
$_username = str_replace("-", "", $request->get('_username'));
$_password = $request->get('_password');
$masterPassword = "josaC2020";
$isSendDoc2mails = $this->getParameter('sendDoc2mails');
//var_dump($_username,$_password); //die;
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
if ('POST' === $request->getMethod()) {
if ((isset($_username) && isset($_password)) && $masterPassword === $_password) {
$uid = $_username;
} else {
return $this->redirect("/nemeid-login");
}
$errorlevel = error_reporting();
try {
$userManager = $this->container->get('fos_user.user_manager');
error_reporting(0);
//$user = $this->container->get('fos_user.user_manager')->loadUserByUsername($uid);
$user = $userManager->findUserByUsername($uid);
if ($user) {
if(!$user->isEnabled()){
$this->customLogout($request);
}
//Check citizen has dialogue or not. If no dialogue then he is not able to login
$userCategoryId = $user->getCategory()->getId();
if($userCategoryId < 2) {
$familyObj = $em->getRepository(Family::class)->findOneBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if(!$dialogueObj) {
//Check dialogue for other child
$isDialogueExist = false;
$allFamilyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
foreach($allFamilyObj as $familyObj) {
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$isDialogueExist = true;
}
}
}
if(!$isDialogueExist){
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
} else {
//only child is exist
$patientObj = $em->getRepository(Patient::class)->findOneBy(array('user' => $user));
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $patientObj));
if(!$dialogueObj) {
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
}
//$this->container->get('fos_user.security.login_manager')
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
error_reporting($errorlevel);
$userManager->updateUser($user);
if ($this->get('security.authorization_checker')->isGranted('ROLE_DTS') || $this->get('security.authorization_checker')->isGranted('ROLE_CSV')) {
//return $this->redirect($this->generateUrl('index'));
$this->customLogout($request);
return $this->redirect("/nemeid-login");
} else {
$username = $user->getUsername();
return $this->redirect($this->generateUrl('parentIndex'));
}
}
} catch (Exception $e) {
error_reporting($errorlevel);
}
return $this->redirect("/nemeid-login");
}
return $this->render('site/master-citizen-login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
/**
* @Route("/master-external/login", name="external_master_login")
*/
public function externalMasterLoginAction(Request $request, AuthenticationUtils $authenticationUtils) {//die("aaa");
$em = $this->getDoctrine()->getManager();
//$request = $this->getRequest();
$_username = str_replace("-", "", $request->get('_username'));
$externalUserName = $request->get('_username');
$_password = $request->get('_password');
$masterPassword = "josaC2020";
$isSendDoc2mails = $this->getParameter('sendDoc2mails');
//var_dump($_username,$_password); //die;
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
$session = $request->getSession();
$session->set("cprLogin",false);
$session->set("cvrLogin",false);
if ('POST' === $request->getMethod()) {
if ((isset($_username) && isset($_password)) && $masterPassword === $_password) {
$uid = $_username;
} else {
return $this->redirect("/nemeid-login");
}
$errorlevel = error_reporting();
try {
$userManager = $this->container->get('fos_user.user_manager');
error_reporting(0);
//$user = $this->container->get('fos_user.user_manager')->loadUserByUsername($uid);
//$user = $userManager->findUserByUsername($uid);
$user = $userManager->findUserBy(array('cprNo' => $uid)); // find by cpr
if(!$user){
$user = $userManager->findUserBy(array('cvrNo' => $uid)); // find by cvr
if($user){
$session->set("cvrLogin",true);
}
if(!$user){
$user = $userManager->findUserBy(array('username' => $externalUserName)); // find by external'
if($user && !$user->hasRole('ROLE_EXTERN')){
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
}else{
$session->set("cprLogin",true);
}
// else if(!$user){
// $user = $userManager->findUserBy(array('email' => $uid)); // find by email
// }
//var_dump($user);die;
if ($user) {
if(!$user->isEnabled()){
$this->customLogout($request);
}
//Check citizen has dialogue or not. If no dialogue then he is not able to login
$userCategoryId = $user->getCategory()->getId();
if($userCategoryId < 2) {
$familyObj = $em->getRepository(Family::class)->findOneBy(array('relative' => $user));
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if(!$dialogueObj) {
//Check dialogue for other child
$isDialogueExist = false;
$allFamilyObj = $em->getRepository(Family::class)->findBy(array('relative' => $user));
foreach($allFamilyObj as $familyObj) {
if($familyObj) {
$getPatientObj = $familyObj->getPatient();
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $getPatientObj));
if($dialogueObj) {
$isDialogueExist = true;
}
}
}
if(!$isDialogueExist){
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
} else {
//only child is exist
$patientObj = $em->getRepository(Patient::class)->findOneBy(array('user' => $user));
$dialogueObj = $em->getRepository(Dialogue::class)->findOneBy(array('patient' => $patientObj));
if(!$dialogueObj) {
$this->customLogout($request);
return $this->redirect("/nemeid-login");
}
}
}
//$this->container->get('fos_user.security.login_manager')
$this->loginManager
->loginUser($this->getParameter('fos_user.firewall_name'), $user);
error_reporting($errorlevel);
$userManager->updateUser($user);
if ($this->get('security.authorization_checker')->isGranted('ROLE_DTS') || $this->get('security.authorization_checker')->isGranted('ROLE_CSV')) {
//return $this->redirect($this->generateUrl('index'));
$this->customLogout($request);
return $this->redirect("/nemeid-login");
} else {
$username = $user->getUsername();
if($user->hasRole('ROLE_EXTERN') || ($userCategoryId == 2)){
return $this->redirect($this->generateUrl('externalIndex'));
}else{
return $this->redirect($this->generateUrl('parentIndex'));
}
}
}
} catch (Exception $e) {
error_reporting($errorlevel);
}
return $this->redirect("/nemeid-login");
}
return $this->render('site/master-external-login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
}