本文整理汇总了PHP中TYPO3\Flow\Security\Context::hasRole方法的典型用法代码示例。如果您正苦于以下问题:PHP Context::hasRole方法的具体用法?PHP Context::hasRole怎么用?PHP Context::hasRole使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\Flow\Security\Context
的用法示例。
在下文中一共展示了Context::hasRole方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: replacePlaceholdersIfNecessary
/**
* Log a message if a post is deleted
*
* @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint
* @Flow\Around("method(TYPO3\Neos\View\TypoScriptView->render())")
* @return void
*/
public function replacePlaceholdersIfNecessary(\TYPO3\Flow\Aop\JoinPointInterface $joinPoint)
{
$result = $joinPoint->getAdviceChain()->proceed($joinPoint);
/* @var $typoScriptView TypoScriptView */
$typoScriptView = $joinPoint->getProxy();
$viewVariables = ObjectAccess::getProperty($typoScriptView, 'variables', TRUE);
if (!isset($viewVariables['value']) || !$viewVariables['value']->getNodeType()->isOfType('Sandstorm.Newsletter:Newsletter')) {
// No newsletter, so logic does not apply
return $result;
}
/* @var $httpRequest Request */
$httpRequest = $this->controllerContext->getRequest()->getHttpRequest();
$arguments = $httpRequest->getUri()->getArguments();
if (!isset($arguments['hmac'])) {
if ($this->securityContext->isInitialized() && $this->securityContext->hasRole('TYPO3.Neos:Editor')) {
// Logged into backend, so we don't need to do anything.
return $result;
} else {
// No HMAC sent -- so we return the email INCLUDING placeholders (as per customer's request)
return $result;
//return '<h1>Error: HMAC not included in the link.</h1>';
}
}
$actualHmac = $arguments['hmac'];
$uriWithoutHmac = str_replace('&hmac=' . $actualHmac, '', (string) $httpRequest->getUri());
$expectedHmac = hash_hmac('sha1', urldecode($uriWithoutHmac), $this->hmacUrlSecret);
if ($expectedHmac !== $actualHmac) {
return '<h1>Error: Wrong link clicked.</h1>Please contact your administrator for help';
}
$result = preg_replace_callback(ReplacePlaceholdersInLiveImplementation::PLACEHOLDER_REGEX, function ($element) use($arguments) {
return ObjectAccess::getPropertyPath($arguments, $element[1]);
}, $result);
return $result;
}
示例2: hasRole
/**
* Returns TRUE, if at least one of the currently authenticated accounts holds
* a role with the given identifier, also recursively.
*
* @param string $roleIdentifier The string representation of the role to search for
* @return boolean TRUE, if a role with the given string representation was found
*/
public function hasRole($roleIdentifier)
{
if ($roleIdentifier === 'TYPO3.Flow:Everybody') {
return true;
}
if ($this->securityContext->canBeInitialized()) {
return $this->securityContext->hasRole($roleIdentifier);
}
return false;
}
示例3: updateAction
/**
* @param Participant $participant
*/
public function updateAction(Participant $participant)
{
$participantEntity = $participant->getPayload();
if ($participantEntity->getAccount() !== NULL && $participantEntity->getAccount() !== $this->securityContext->getAccount() && !$this->securityContext->hasRole('T3DD.Backend:Administrator')) {
$this->response->setStatus(403);
return;
}
if (!$participantEntity->isCompleted()) {
$participantEntity->setCompleted(TRUE);
$participantEntity->setAccount($this->securityContext->getAccount());
}
$this->participantRepository->update($participantEntity);
$this->view->assign('value', $participant);
}
示例4: render
/**
* renders <f:then> child if the role could be found in the security context,
* otherwise renders <f:else> child.
*
* @param string $role The role
* @param string $packageKey PackageKey of the package defining the role
* @return string the rendered string
* @api
*/
public function render($role, $packageKey = NULL)
{
if ($role !== 'Everybody' && $role !== 'Anonymous' && $role !== 'AuthenticatedUser' && strpos($role, '.') === FALSE && strpos($role, ':') === FALSE) {
if ($packageKey === NULL) {
$request = $this->controllerContext->getRequest();
$role = $request->getControllerPackageKey() . ':' . $role;
} else {
$role = $packageKey . ':' . $role;
}
}
if ($this->securityContext->hasRole($role)) {
return $this->renderThenChild();
} else {
return $this->renderElseChild();
}
}
示例5: render
/**
* renders <f:then> child if the role could be found in the security context,
* otherwise renders <f:else> child.
*
* @param string $role The role or role identifier
* @param string $packageKey PackageKey of the package defining the role
* @param Account $account If specified, this subject of this check is the given Account instead of the currently authenticated account
* @return string the rendered string
* @api
*/
public function render($role, $packageKey = null, Account $account = null)
{
if (is_string($role)) {
$roleIdentifier = $role;
if (in_array($roleIdentifier, array('Everybody', 'Anonymous', 'AuthenticatedUser'))) {
$roleIdentifier = 'TYPO3.Flow:' . $roleIdentifier;
}
if (strpos($roleIdentifier, '.') === false && strpos($roleIdentifier, ':') === false) {
if ($packageKey === null) {
$request = $this->controllerContext->getRequest();
$roleIdentifier = $request->getControllerPackageKey() . ':' . $roleIdentifier;
} else {
$roleIdentifier = $packageKey . ':' . $roleIdentifier;
}
}
$role = $this->policyService->getRole($roleIdentifier);
}
if ($account instanceof Account) {
$hasRole = $account->hasRole($role);
} else {
$hasRole = $this->securityContext->hasRole($role->getIdentifier());
}
if ($hasRole) {
return $this->renderThenChild();
} else {
return $this->renderElseChild();
}
}
示例6: deleteAction
/**
* @param \T3DD\Backend\Domain\Model\Registration\Registration $registration
*/
public function deleteAction(\T3DD\Backend\Domain\Model\Registration\Registration $registration)
{
if (!$this->securityContext->hasRole('T3DD.Backend:Administrator') && (!$registration->getSecondsToExpiration() || $registration->getAccount() !== $this->securityContext->getAccount())) {
$this->response->setStatus(403);
return;
}
$this->registrationRepository->remove($registration);
$this->view->assign('value', NULL);
}
示例7: shouldIncludeSecurityContext
/**
* @return boolean
*/
protected function shouldIncludeSecurityContext()
{
if (!isset($this->options['whitelistRoles'])) {
return TRUE;
}
foreach ($this->options['whitelistRoles'] as $roleIdentifier) {
if ($this->securityContext->hasRole($roleIdentifier)) {
return FALSE;
}
}
return TRUE;
}
示例8: deleteAction
/**
* @param Session $session
*/
public function deleteAction(Session $session)
{
if ($session->getAccount() !== $this->securityContext->getAccount() && !$this->securityContext->hasRole('T3DD.Backend:Administrator')) {
$this->response->setStatus(403);
return;
}
foreach ($this->voteRepository->findBySession($session) as $vote) {
$this->voteRepository->remove($vote);
}
$this->sessionRepository->remove($session);
// TODO Fix redirect
$this->redirect('index');
}
示例9: checkNodeEditAccess
/**
* @param NodeInterface $referenceNode
* @param string $action
* @throws AccessDeniedException
*/
protected function checkNodeEditAccess(NodeInterface $referenceNode, $action = 'remove')
{
$nodeType = $referenceNode->getNodeType()->getName();
if ($this->securityContext->hasRole('SimplyAdmire.Cap.Api:Editor')) {
return;
}
if ($nodeType === 'SimplyAdmire.Cap.PersonBundle:Person') {
$identifier = $referenceNode->getIdentifier();
if ($identifier === $this->getActiveProfile()->getIdentifier()) {
return;
}
}
$author = $referenceNode->getProperty('author');
if ($author instanceof NodeInterface) {
$identifier = $referenceNode->getProperty('author')->getIdentifier();
if ($identifier === $this->getActiveProfile()->getIdentifier()) {
return;
}
}
throw new AccessDeniedException('You do not have access to ' . $action . ' this node');
}
示例10: getNewsAdmin
/**
* Get the news list by selection
*
* @param \Lelesys\Plugin\News\Domain\Model\Category $category The category
* @param \Lelesys\Plugin\News\Domain\Model\Folder $folder The folder
* @return \TYPO3\Flow\Persistence\QueryResultInterface The query result
*/
public function getNewsAdmin(\Lelesys\Plugin\News\Domain\Model\Category $category = NULL, \Lelesys\Plugin\News\Domain\Model\Folder $folder = NULL)
{
$query = $this->createQuery();
$queryBuilder = ObjectAccess::getProperty($query, 'queryBuilder', TRUE);
$constraints = array();
$user = '';
if ($this->securityContext->hasRole('Lelesys.Plugin.News:NewsAdmin')) {
if (!empty($folder)) {
$constraints[] = 'n.folder = ' . "'" . $folder->getUuid() . "'";
}
} else {
$party = $this->securityContext->getParty();
$user = $this->persistenceManager->getIdentifierByObject($party);
$constraints[] = 'n.createdBy = ' . "'" . $user . "'";
}
if (!empty($category)) {
$constraints[] = 'c.Persistence_Object_Identifier IN (' . "'" . $category->getUuid() . "'" . ')';
}
$newsConstraints = '';
$count = count($constraints);
$newCount = 1;
foreach ($constraints as $contraint) {
if ($count > $newCount) {
$newsConstraints .= $contraint . ' AND ';
} else {
$newsConstraints .= $contraint;
}
$newCount++;
}
$queryBuilder->resetDQLParts()->select('n')->from('Lelesys\\Plugin\\News\\Domain\\Model\\News', 'n');
if (!empty($category)) {
$queryBuilder->leftjoin('n.categories', 'c');
}
if (!empty($category) || !empty($folder) || $user !== '') {
$queryBuilder->where($newsConstraints);
}
$queryBuilder->orderBy('n.dateTime', 'DESC');
return $query->execute();
}
示例11: isAccessible
/**
* Tells if this node may be accessed according to the current security context.
*
* @return boolean
*/
public function isAccessible()
{
if ($this->hasAccessRestrictions() === false) {
return true;
}
if ($this->securityContext->canBeInitialized() === false) {
return true;
}
foreach ($this->accessRoles as $roleName) {
if ($this->securityContext->hasRole($roleName)) {
return true;
}
}
return false;
}
示例12: initializeView
/**
* Initializes the view with common variables.
*
* @param \TYPO3\Flow\Mvc\View\ViewInterface $view
* @return void
*/
protected function initializeView(\TYPO3\Flow\Mvc\View\ViewInterface $view)
{
// We don't need to do all this for json responses.
if ($this->request->hasArgument('json')) {
return;
}
// Are user an Editor?
$isEditor = 0;
if ($this->securityContext->hasRole('_OurBrand_.Business:worker')) {
$isEditor = 1;
}
// Are user an Admin?
$isAdmin = 0;
if ($this->currentUser->isAdministrator()) {
$isAdmin = 1;
}
$inDev = 0;
if (strstr($_SERVER['HTTP_HOST'], '.local')) {
$inDev = 1;
}
// Get file stamp
$fileStamp = time();
if ($this->environment->getContext() == 'Production' && file_exists(FLOW_PATH_ROOT . 'Data/Temporary/Production/Configuration/ProductionConfigurations.php')) {
$fileStamp = @filemtime(FLOW_PATH_ROOT . 'Data/Temporary/Production/Configuration/ProductionConfigurations.php');
}
// Exercise categories
$exerciseCategoryRepository = new \_OurBrand_\Quiz\Domain\Repository\ExerciseCategoryRepository();
$exerciseCategories = $exerciseCategoryRepository->findAll();
$subjectRepository = new \_OurBrand_\Quiz\Domain\Repository\SubjectRepository();
$this->view->assign('archiveUri', $this->getArchiveUri());
$this->view->assign('UIPath', $this->settings['UIPath']);
$this->view->assign('isEditor', $isEditor);
$this->view->assign('isAdmin', $isAdmin);
$this->view->assign('inDev', $inDev);
$this->view->assign('logintime', $fileStamp);
// When was system updated?
$this->view->assign('exerciseCategories', $exerciseCategories);
$this->view->assign('user', $this->currentUser);
if ($this->request->hasArgument('exercise') || $this->request->hasArgument('currentExercise')) {
$exercise = $this->getExerciseFromArgument();
if (is_a($exercise, '\\_OurBrand_\\Quiz\\Domain\\Model\\Exercise')) {
// Set type
$objectName = explode('\\', get_class($exercise));
$exerciseType = $this->exerciseTypeRepository->findOneByObjectName(array_pop($objectName));
$exercise->setType($exerciseType);
$durations = $this->getDurationsForExercise($this->settings['exercise']['durations']);
$this->view->assign('editExerciseDurations', $durations);
$this->view->assign('editExerciseCategories', $this->getExerciseCategories($exercise));
$this->view->assign('editExerciseDifficulties', $this->getDifficultiesForExercise());
$this->view->assign('previewExerciseDuration', $this->getExerciseDurationLabel($exercise));
$this->view->assign('previewExerciseSkill', $this->getExerciseSkillLabel($exercise));
$this->view->assign('previewExerciseDifficulty', $this->getExerciseDifficultyLabel($exercise));
$this->view->assign('previewExerciseIsHintSet', $exercise->getHint() != '' ? 1 : 0);
$this->view->assign('previewExerciseIsExplanationSet', $exercise->getExplanation() != '' ? 1 : 0);
$this->view->assign('subjectOptions', $subjectRepository->findAll());
$this->view->assign('subjectPlaceholder', $this->translateById('quiz.placeholder.subject'));
}
$quiz = $exercise->getQuiz();
} else {
if ($this->request->hasArgument('quiz')) {
$quiz = $this->getQuizFromArgument();
}
}
// Get/Set duration.
$duration = 0;
if (isset($quiz) && is_a($quiz, '\\_OurBrand_\\Quiz\\Domain\\Model\\Quiz')) {
$duration = $quiz->getDuration();
}
$this->view->assign('duration', gmdate("H:i", $duration));
}
示例13: currentUserCanPublishToWorkspace
/**
* Checks if the current user may publish to the given workspace according to one the roles of the user's accounts
*
* In future versions, this logic may be implemented in Neos in a more generic way (for example, by means of an
* ACL object), but for now, this method exists in order to at least centralize and encapsulate the required logic.
*
* @param Workspace $workspace The workspace
* @return boolean
*/
public function currentUserCanPublishToWorkspace(Workspace $workspace)
{
if ($workspace->getName() === 'live') {
return $this->securityContext->hasRole('TYPO3.Neos:LivePublisher');
}
if ($workspace->getOwner() === $this->getCurrentUser() || $workspace->getOwner() === null) {
return true;
}
return false;
}
示例14: isAccessible
/**
* Tells if this node may be accessed according to the current security context.
*
* @return boolean
*/
public function isAccessible()
{
// TODO: if security context can not be initialized (because too early), we return TRUE.
if ($this->hasAccessRestrictions() === FALSE) {
return TRUE;
}
foreach ($this->accessRoles as $roleName) {
if ($this->securityContext->hasRole($roleName)) {
return TRUE;
}
}
return FALSE;
}