コード例 #1
0
 protected function build($username, Request $request, Application $app)
 {
     $this->parameters = array();
     $repo = new UserAccountRepository();
     $this->parameters['user'] = $repo->loadByUserName($username);
     if (!$this->parameters['user']) {
         return false;
     }
     return true;
 }
コード例 #2
0
 protected function build($username, Request $request, Application $app)
 {
     $this->parameters = array('user' => null);
     $repository = new UserAccountRepository();
     $this->parameters['user'] = $repository->loadByUserName($username);
     if (!$this->parameters['user']) {
         return false;
     }
     if ($this->parameters['user']->getIsClosedBySysAdmin()) {
         return false;
     }
     return true;
 }
コード例 #3
0
 function test1()
 {
     $user = new UserAccountModel();
     $user->setEmail("*****@*****.**");
     $user->setUsername("test");
     $user->setPassword("password");
     $userRepo = new UserAccountRepository();
     $userRepo->create($user);
     $this->checkUserInTest1($userRepo->loadByID($user->getId()));
     $this->checkUserInTest1($userRepo->loadByUserName("test"));
     $this->checkUserInTest1($userRepo->loadByEmail("*****@*****.**"));
     $this->checkUserInTest1($userRepo->loadByUserNameOrEmail("test"));
     $this->checkUserInTest1($userRepo->loadByUserNameOrEmail("*****@*****.**"));
 }
 protected function build($username, $accesskey, Request $request, Application $app)
 {
     $this->parameters = array('user' => null);
     $repository = new UserAccountRepository();
     $this->parameters['user'] = $repository->loadByUserName($username);
     if (!$this->parameters['user']) {
         return false;
     }
     if ($this->parameters['user']->getIsClosedBySysAdmin()) {
         return false;
     }
     $repository = new UserAccountPrivateFeedKeyRepository();
     $this->parameters['feedKey'] = $repository->loadByUserAccountIDAndAccessKey($this->parameters['user']->getId(), $accesskey);
     if (!$this->parameters['feedKey']) {
         return false;
     }
     return true;
 }
 function testAllUsersCreateSiteByDefault()
 {
     $user = new UserAccountModel();
     $user->setEmail("*****@*****.**");
     $user->setUsername("test");
     $user->setPassword("password");
     $userRepo = new UserAccountRepository();
     $userRepo->create($user);
     $userRepo->verifyEmail($user);
     // reload user object so all flags set correctly
     $user = $userRepo->loadByUserName("test");
     $extensionsManager = new ExtensionManager($this->app);
     $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager);
     ## user can create sites, anon can't!
     $permissions = $userPerRepo->getPermissionsForUserInIndex(null, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex(null, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($user, false);
     $this->assertEquals(1, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($user, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
 }
コード例 #6
0
 function listUsersNotEditors(Application $app, Request $request)
 {
     $repo = new UserHasNoEditorPermissionsInSiteRepository();
     if ($request->request->get('action') == "add" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
         $ur = new UserAccountRepository();
         $user = $ur->loadByUserName($request->request->get('username'));
         if ($user) {
             $repo->addUserToSite($user, $app['currentSite'], $app['currentUser']);
             return $app->redirect('/admin/usernoteditor/');
         }
     } else {
         if ($request->request->get('action') == "remove" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
             $ur = new UserAccountRepository();
             $user = $ur->loadByID($request->request->get('id'));
             if ($user) {
                 $repo->removeUserFromSite($user, $app['currentSite'], $app['currentUser']);
                 return $app->redirect('/admin/usernoteditor/');
             }
         }
     }
     $userAccountRepoBuilder = new UserAccountRepositoryBuilder();
     $userAccountRepoBuilder->setUserHasNoEditorPermissionsInSite($app['currentSite']);
     return $app['twig']->render('site/admin/listUsersNotEditors.html.twig', array('users' => $userAccountRepoBuilder->fetchAll()));
 }
 function testSpecificUsersCreateSite()
 {
     $user = new UserAccountModel();
     $user->setEmail("*****@*****.**");
     $user->setUsername("test");
     $user->setPassword("password");
     $userOther = new UserAccountModel();
     $userOther->setEmail("*****@*****.**");
     $userOther->setUsername("other");
     $userOther->setPassword("password");
     $userRepo = new UserAccountRepository();
     $userRepo->create($user);
     $userRepo->verifyEmail($user);
     $userRepo->create($userOther);
     $userRepo->verifyEmail($userOther);
     // reload user object so all flags set correctly
     $userOther = $userRepo->loadByUserName($userOther->getUsername());
     $user = $userRepo->loadByUserName("test");
     $extensionsManager = new ExtensionManager($this->app);
     $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager);
     ## Noone can create sites
     $permissions = $userPerRepo->getPermissionsForUserInIndex(null);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($user);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($userOther);
     $this->assertEquals(0, count($permissions->getPermissions()));
     ## Now create user group for all users
     $userGroupModel = new \models\UserGroupModel();
     $userGroupModel->setTitle("TITLE");
     $userGroupRepo = new \repositories\UserGroupRepository();
     $userGroupRepo->createForIndex($userGroupModel);
     $userGroupRepo->addUserToGroup($user, $userGroupModel);
     $userGroupRepo->addPermissionToGroup(new \userpermissions\CreateSiteUserPermission(), $userGroupModel, null);
     ## Now user can create sites, anon can't!
     $permissions = $userPerRepo->getPermissionsForUserInIndex(null, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex(null, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($user, false);
     $this->assertEquals(1, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($user, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($userOther, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInIndex($userOther, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
 }
コード例 #8
0
 public function setFromJSON($json)
 {
     if (isset($json->event)) {
         if (isset($json->event->summary)) {
             $this->summary = $json->event->summary;
         }
         if (isset($json->event->description)) {
             $this->description = $json->event->description;
         }
         if (isset($json->event->url)) {
             $this->url = $json->event->url;
         }
         $timezone = new \DateTimeZone($this->timezone);
         if (isset($json->event->start->str)) {
             $this->start_at = new \DateTime($json->event->start->str, $timezone);
         }
         if (isset($json->event->end->str)) {
             $this->end_at = new \DateTime($json->event->end->str, $timezone);
         }
         if (isset($json->event->country) && isset($json->event->country->code) && $json->event->country->code) {
             $countryRepo = new CountryRepository();
             // Delibrately setting NULL on failure so user gets an error message.
             $this->country = $countryRepo->loadByTwoCharCode($json->event->country->code);
             // TODO check allowed in this site
         }
         if (isset($json->event->timezone)) {
             // Delibrately setting NULL on failure so user gets an error message.
             $this->timezone = $this->country && in_array($json->event->timezone, $this->country->getTimezonesAsList()) ? $json->event->timezone : null;
         }
     }
     if (isset($json->site)) {
         $siteRepo = new SiteRepository();
         if (isset($json->site->id)) {
             $this->site = $siteRepo->loadById($json->site->id);
         }
         if (isset($json->site->slug)) {
             $this->site = $siteRepo->loadBySlug($json->site->slug);
         }
     }
     if (isset($json->user)) {
         $userRepo = new UserAccountRepository();
         if (isset($json->user->email)) {
             $this->user = $userRepo->loadByEmail($json->user->email);
         } else {
             if (isset($json->user->username)) {
                 $this->user = $userRepo->loadByUserName($json->user->username);
             }
         }
     }
     if (isset($json->group)) {
         $groupRepo = new GroupRepository();
         if (isset($json->group->slug) && $this->site) {
             $this->group = $groupRepo->loadBySlug($this->site, $json->group->slug);
         } else {
             if (isset($json->group->id)) {
                 $this->group = $groupRepo->loadById($json->group->id);
             }
         }
     }
 }
コード例 #9
0
 function index($id, Request $request, Application $app)
 {
     $this->build($id, $request, $app);
     if ($request->request->get('action') == "addpermission" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
         $extension = $app['extensions']->getExtensionById($request->request->get("extension"));
         if ($extension) {
             $permission = $extension->getUserPermission($request->request->get("permission"));
             if ($permission) {
                 $ugr = new UserGroupRepository();
                 $ugr->addPermissionToGroup($permission, $this->parameters['usergroup'], $app['currentUser']);
                 return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
             }
         }
     } else {
         if ($request->request->get('action') == "removepermission" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
             $extension = $app['extensions']->getExtensionById($request->request->get("extension"));
             if ($extension) {
                 $permission = $extension->getUserPermission($request->request->get("permission"));
                 if ($permission) {
                     $ugr = new UserGroupRepository();
                     $ugr->removePermissionFromGroup($permission, $this->parameters['usergroup'], $app['currentUser']);
                     return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                 }
             }
         }
     }
     $form = $app['form.factory']->create(new ActionForm());
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $data = $form->getData();
             $action = new ActionParser($data['action']);
             if ($action->getCommand() == 'addusername') {
                 $uar = new UserAccountRepository();
                 $user = $uar->loadByUserName($action->getParam(0));
                 if ($user) {
                     $ugr = new UserGroupRepository();
                     $ugr->addUserToGroup($user, $this->parameters['usergroup'], $app['currentUser']);
                     return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                 }
             } else {
                 if ($action->getCommand() == 'removeusername') {
                     $uar = new UserAccountRepository();
                     $user = $uar->loadByUserName($action->getParam(0));
                     if ($user) {
                         $ugr = new UserGroupRepository();
                         $ugr->removeUserFromGroup($user, $this->parameters['usergroup'], $app['currentUser']);
                         return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                     }
                 } else {
                     if ($action->getCommand() == 'includesanonymous') {
                         $ugr = new UserGroupRepository();
                         $this->parameters['usergroup']->setIsIncludesAnonymous($action->getParamBoolean(0));
                         $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']);
                         return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                     } else {
                         if ($action->getCommand() == 'includesusers') {
                             $ugr = new UserGroupRepository();
                             $this->parameters['usergroup']->setIsIncludesUsers($action->getParamBoolean(0));
                             $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']);
                             return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                         } else {
                             if ($action->getCommand() == 'includesverifiedusers') {
                                 $ugr = new UserGroupRepository();
                                 $this->parameters['usergroup']->setIsIncludesVerifiedUsers($action->getParamBoolean(0));
                                 $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']);
                                 return $app->redirect('/sysadmin/usergroup/' . $this->parameters['usergroup']->getId());
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->parameters['form'] = $form->createView();
     $urb = new UserAccountRepositoryBuilder();
     $urb->setInUserGroup($this->parameters['usergroup']);
     $this->parameters['users'] = $urb->fetchAll();
     $r = new UserPermissionsRepository($app['extensions']);
     $this->parameters['userpermissions'] = $r->getPermissionsForUserGroup($this->parameters['usergroup'], false);
     $this->parameters['userpermissionstoadd'] = array();
     foreach ($app['extensions']->getExtensionsIncludingCore() as $ext) {
         foreach ($ext->getUserPermissions() as $key) {
             $per = $ext->getUserPermission($key);
             if ($per->isForIndex() && !in_array($per, $this->parameters['userpermissions'])) {
                 $this->parameters['userpermissionstoadd'][] = $per;
             }
         }
     }
     return $app['twig']->render('sysadmin/usergroup/index.html.twig', $this->parameters);
 }
コード例 #10
0
$extraFlags = explode(",", isset($argv[4]) ? strtolower($argv[4]) : '');
$makeSysAdmin = in_array("sysadmin", $extraFlags);
if (!$username || !$email || !$password) {
    die("Username and Email and Password?\n\n");
}
print "Username: "******"\n";
print "Email: " . $email . "\n";
print "Password: "******"\n";
print "Sys Admin: " . ($makeSysAdmin ? "yes" : "no") . "\n";
sleep(10);
print "Starting ...\n";
$userRepository = new UserAccountRepository();
if (is_array($CONFIG->userNameReserved) && in_array($username, $CONFIG->userNameReserved)) {
    die("That user name is reserved\n");
}
$userExistingUserName = $userRepository->loadByUserName($username);
if ($userExistingUserName) {
    die("That user name is already taken\n");
}
$userExistingEmail = $userRepository->loadByEmail($email);
if ($userExistingEmail) {
    die("That email address already has an account\n");
}
$user = new UserAccountModel();
$user->setEmail($email);
$user->setUsername($username);
$user->setPassword($password);
$userRepository->create($user);
if ($makeSysAdmin) {
    $userRepository->makeSysAdmin($user, null);
}
コード例 #11
0
 function users($id, Request $request, Application $app)
 {
     if (!$this->build($id, $request, $app)) {
         $app->abort(404, "User Group does not exist.");
     }
     if ($request->request->get('action') == "removeuser" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
         $ur = new UserAccountRepository();
         $user = $ur->loadById($request->request->get('id'));
         if ($user) {
             $ugr = new UserGroupRepository();
             $ugr->removeUserFromGroup($user, $this->parameters['usergroup'], $app['currentUser']);
             return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
         }
     } else {
         if ($request->request->get('action') == "adduser" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
             $ur = new UserAccountRepository();
             $user = $ur->loadByUserName($request->request->get('username'));
             if ($user) {
                 $ugr = new UserGroupRepository();
                 $ugr->addUserToGroup($user, $this->parameters['usergroup'], $app['currentUser']);
                 return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
             } else {
                 $app['flashmessages']->addError("Could not find user");
             }
         } else {
             if ($request->request->get('action') == "removeanonymous" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                 $this->parameters['usergroup']->setIsIncludesAnonymous(false);
                 $ugr = new UserGroupRepository();
                 $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']);
                 return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
             } else {
                 if ($request->request->get('action') == "addanonymous" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                     $this->parameters['usergroup']->setIsIncludesAnonymous(true);
                     $ugr = new UserGroupRepository();
                     $ugr->editIsIncludesAnonymous($this->parameters['usergroup'], $app['currentUser']);
                     return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
                 } else {
                     if ($request->request->get('action') == "removeusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                         $this->parameters['usergroup']->setIsIncludesUsers(false);
                         $ugr = new UserGroupRepository();
                         $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']);
                         return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
                     } else {
                         if ($request->request->get('action') == "addusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                             $this->parameters['usergroup']->setIsIncludesUsers(true);
                             $ugr = new UserGroupRepository();
                             $ugr->editIsIncludesUser($this->parameters['usergroup'], $app['currentUser']);
                             return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
                         } else {
                             if ($request->request->get('action') == "removeverifiedusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                                 $this->parameters['usergroup']->setIsIncludesVerifiedUsers(false);
                                 $ugr = new UserGroupRepository();
                                 $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']);
                                 return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
                             } else {
                                 if ($request->request->get('action') == "addverifiedusers" && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
                                     $this->parameters['usergroup']->setIsIncludesVerifiedUsers(true);
                                     $ugr = new UserGroupRepository();
                                     $ugr->editIsIncludesVerifiedUser($this->parameters['usergroup'], $app['currentUser']);
                                     return $app->redirect('/admin/usergroup/' . $this->parameters['usergroup']->getId() . '/users');
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $urb = new UserAccountRepositoryBuilder();
     $urb->setInUserGroup($this->parameters['usergroup']);
     $this->parameters['users'] = $urb->fetchAll();
     $r = new UserPermissionsRepository($app['extensions']);
     $this->parameters['userpermissions'] = $r->getPermissionsForUserGroup($this->parameters['usergroup'], false);
     return $app['twig']->render('site/adminusergroup/users.html.twig', $this->parameters);
 }
コード例 #12
0
 function forgot(Request $request, Application $app)
 {
     $form = $app['form.factory']->create(new ForgotUserForm());
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $data = $form->getData();
             $userRepository = new UserAccountRepository();
             if ($data['email']) {
                 $user = $userRepository->loadByEmail($data['email']);
             } else {
                 if ($data['username']) {
                     $user = $userRepository->loadByUserName($data['username']);
                 }
             }
             if ($user) {
                 if ($user->getIsClosedBySysAdmin()) {
                     $form->addError(new FormError('There was a problem with this account and it has been closed: ' . $user->getClosedBySysAdminReason()));
                 } else {
                     $aurr = new UserAccountResetRepository();
                     $uarLast = $aurr->loadRecentlyUnusedSentForUserAccountId($user->getId(), $app['config']->resetEmailsGapBetweenInSeconds);
                     if ($uarLast) {
                         $form->addError(new FormError('An email was sent recently; please try again soon'));
                     } else {
                         $uar = $aurr->create($user);
                         $uar->sendEmail($app, $user);
                         return $app['twig']->render('index/user/forgotDone.html.twig', array());
                     }
                 }
             } else {
                 $form->addError(new FormError('User not known'));
             }
         }
     }
     return $app['twig']->render('index/user/forgot.html.twig', array('form' => $form->createView()));
 }
 function testSiteOwnerSpecificEdit()
 {
     global $CONFIG;
     $CONFIG->newUsersAreEditors = true;
     $this->addCountriesToTestDB();
     $userOwner = new UserAccountModel();
     $userOwner->setEmail("*****@*****.**");
     $userOwner->setUsername("test");
     $userOwner->setPassword("password");
     $userVerified = new UserAccountModel();
     $userVerified->setEmail("*****@*****.**");
     $userVerified->setUsername("verified");
     $userVerified->setPassword("password");
     $userUnverified = new UserAccountModel();
     $userUnverified->setEmail("*****@*****.**");
     $userUnverified->setUsername("unverified");
     $userUnverified->setPassword("password");
     $userRepo = new UserAccountRepository();
     $userRepo->create($userOwner);
     $userRepo->verifyEmail($userOwner);
     $userRepo->create($userVerified);
     $userRepo->verifyEmail($userVerified);
     $userRepo->create($userUnverified);
     // reload user object so all flags set correctly
     $userOwner = $userRepo->loadByUserName($userOwner->getUsername());
     $userVerified = $userRepo->loadByUserName($userVerified->getUsername());
     $userUnverified = $userRepo->loadByUserName($userUnverified->getUsername());
     $extensionsManager = new ExtensionManager($this->app);
     $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager);
     $siteModel = new \models\SiteModel();
     $siteModel->setTitle("Test");
     $siteModel->setSlug("test");
     $siteRepository = new \repositories\SiteRepository();
     $countryRepository = new \repositories\CountryRepository();
     $siteRepository->create($siteModel, $userOwner, array($countryRepository->loadByTwoCharCode("GB")), $this->getSiteQuotaUsedForTesting(), false);
     ## Check!
     $extensionsManager = new ExtensionManager($this->app);
     $userPerRepo = new \repositories\UserPermissionsRepository($extensionsManager);
     $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, false);
     $this->assertEquals(2, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInSite($userOwner, $siteModel, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInSite($userVerified, $siteModel, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForUserInSite($userUnverified, $siteModel, true);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForAnonymousInSite($siteModel, false, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForAnyUserInSite($siteModel, false, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
     $permissions = $userPerRepo->getPermissionsForAnyVerifiedUserInSite($siteModel, false, false);
     $this->assertEquals(0, count($permissions->getPermissions()));
 }
コード例 #14
0
 function login(Request $request, Application $app)
 {
     if (!$app['apiApp']) {
         return $app['twig']->render('indexapi2/index/login.app.problem.html.twig', array());
     }
     $appRequestTokenRepo = new API2ApplicationRequestTokenRepository();
     $userAuthorisationTokenRepo = new API2ApplicationUserAuthorisationTokenRepository();
     $userInApp2Repo = new UserInAPI2ApplicationRepository();
     ######################################## Check Data In
     // Load and check request token!
     $data = array();
     if ($app['websession']->has('api2requestToken')) {
         $data['request_token'] = $app['websession']->get('api2requestToken');
     }
     $data = array_merge($data, $_GET, $_POST);
     $requestToken = $data['request_token'] ? $appRequestTokenRepo->loadByAppAndRequestToken($app['apiApp'], $data['request_token']) : null;
     if (!$requestToken || $requestToken->getIsUsed()) {
         return $app['twig']->render('indexapi2/index/login.requestToken.problem.html.twig', array());
     }
     $userAuthorisationToken = null;
     $permissionsGranted = new API2ApplicationUserPermissionsModel();
     $app['websession']->set('api2appToken', $app['apiApp']->getAppToken());
     $app['websession']->set('api2requestToken', $requestToken->getRequestToken());
     ######################################## User Workflow
     $formObj = new LogInUserForm($app['currentUser'], $app['apiApp'], $requestToken);
     $form = $app['form.factory']->create($formObj);
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $formData = $form->getData();
             $userRepository = new UserAccountRepository();
             if ($formData['email']) {
                 $user = $userRepository->loadByEmail($formData['email']);
             } else {
                 if ($formData['username']) {
                     $user = $userRepository->loadByUserName($formData['username']);
                 }
             }
             if ($user) {
                 if ($user->checkPassword($formData['password'])) {
                     if ($app['apiApp']->getIsAutoApprove()) {
                         $permissionsGranted->setFromApp($app['apiApp']);
                     } else {
                         $permissionsGranted->setFromData($formData);
                     }
                     $userInApp2Repo->setPermissionsForUserInApp($permissionsGranted, $user, $app['apiApp']);
                     $userAuthorisationToken = $userAuthorisationTokenRepo->createForAppAndUserFromRequestToken($app['apiApp'], $user, $requestToken);
                 } else {
                     $app['monolog']->addError("Login attempt on API2 - account " . $user->getId() . ' - password wrong.');
                     $form->addError(new FormError('User and password not recognised'));
                 }
             } else {
                 $app['monolog']->addError("Login attempt on API2 - unknown account");
                 $form->addError(new FormError('User and password not recognised'));
             }
         }
     }
     if (!$userAuthorisationToken) {
         return $app['twig']->render('indexapi2/index/login.html.twig', array('form' => $form->createView(), 'api2app' => $app['apiApp'], 'askForPermissionEditor' => $formObj->getIsEditor()));
     }
     ###################################### Return
     if ($requestToken->getCallbackUrl()) {
         if ($userAuthorisationToken) {
             return $app->redirect($requestToken->getCallbackUrlWithParams(array('authorisation_token' => $userAuthorisationToken->getAuthorisationToken(), 'state' => $requestToken->getStateFromUser())));
         } else {
             return $app->redirect($requestToken->getCallbackUrlWithParams(array('status' => 'failure')));
         }
     } else {
         if ($requestToken->getIsCallbackJavascript()) {
             if ($userAuthorisationToken) {
                 return $app['twig']->render('indexapi2/index/login.callback.javascript.success.html.twig', array('authorisationToken' => $userAuthorisationToken->getAuthorisationToken(), 'state' => $requestToken->getStateFromUser()));
             } else {
                 return $app['twig']->render('indexapi2/index/login.callback.javascript.failure.html.twig', array());
             }
         } else {
             if ($requestToken->getIsCallbackDisplay()) {
                 if ($userAuthorisationToken) {
                     return $app['twig']->render('indexapi2/index/login.callback.display.success.html.twig', array('authorisationToken' => $userAuthorisationToken->getAuthorisationToken()));
                 } else {
                     return $app['twig']->render('indexapi2/index/login.callback.display.failure.html.twig', array());
                 }
             } else {
                 return "No Callback was given!";
             }
         }
     }
     return "???";
 }