Beispiel #1
0
	/**
	 * @return string
	 */
	private function getUsername()
	{
		$username = '******';
		if ($this->identity) {
			$service = $this->container->getService('Nella\Security\CredentialsEntity');
			$credentials = $service->repository->findOneByIdentity($this->identity->id);
			if ($credentials) {
				$username = $credentials->username;
			}
		}
		return $username;
	}
Beispiel #2
0
	/**
	 * Performs an authentication
	 *
	 * @param array
	 * @return IdentityEntity
	 * @throws \Nette\Security\AuthenticationException
	 */
	public function authenticate(array $credentials)
	{
		list($username, $password) = $credentials;
		$service = $this->container->getService('Nella\Security\CredentialsEntity');

		if (strpos($username, '@') !== FALSE) {
			$entity = $service->repository->findOneByEmail($username);
		} else {
			$entity = $service->repository->findOneByUsername($username);
		}

		if (empty($entity)) {
			throw new \Nette\Security\AuthenticationException("User with this username or email is not registered", self::IDENTITY_NOT_FOUND);
		}

		if ($entity->verifyPassword($password) == FALSE) {
			throw new \Nette\Security\AuthenticationException("Invalid password", self::INVALID_CREDENTIAL);
		}

		return $entity->identity;
	}
Beispiel #3
0
	/**
	 * @param \Nella\Doctrine\Container
	 */
	public function __construct(\Nella\Doctrine\Container $container)
	{
		$service = $container->getService('Nella\Security\RoleEntity');
		$roles = $service->repository->findAll();

		foreach ($this->defaultResources as $resource) {
			$this->addResource($resource);
		}

		foreach ($roles as $role) {
			$this->addRole($role->name);
			foreach ($role->permissions as $permission) {
				if ($permission->resource && !$this->hasResource($permission->resource)) {
					$this->addResource($permission->resource);
				}

				if ($permission->allow) {
					$this->allow($role->name, $permission->resource, $permission->privilege);
				} else {
					$this->deny($role->name, $permission->resource, $permission->privilege);
				}
			}
		}
	}
Beispiel #4
0
	/**
	 * @param \Nella\Validator\ClassMetadata
	 */
	public function parse(\Nella\Validator\ClassMetadata $metadata)
	{
		$ref = $metadata->getClassReflection();
		if ($ref->implementsInterface('Nella\Models\IEntity')
			 && ($ref->hasAnnotation('entity') || $ref->hasAnnotation('mappedSuperClass'))) {
			$emeta = $this->container->getEntityManager()->getClassMetadata($ref->getName());
			foreach ($emeta->fieldMappings as $field) {
				barDump($field, $ref->getName() . "::\$$" . $field['fieldName']);
				if (isset($field['declared']) && $field['declared'] != $ref->getName()) {
					continue;
				}

				switch ($field['type']) {
					case 'integer':
					case 'smallint':
					case 'bigint':
						$metadata->addRule($field['fieldName'], Validator::TYPE, 'int');
						break;
					case 'decimal':
					case 'float':
						$metadata->addRule($field['fieldName'], Validator::TYPE, 'double');
						break;
					case 'boolean':
					case 'object':
					case 'array':
						$metadata->addRule($field['fieldName'], Validator::TYPE, $field['type']);
						break;
					case 'string':
						$metadata->addRule($field['fieldName'], Validator::TYPE, $field['type']);
						$metadata->addRule($field['fieldName'], Validator::MAX_LENGTH, $field['length'] ?: 255);
						break;
					case 'date':
					case 'time':
					case 'datetime':
					case 'datetimetz':
						$metadata->addRule($field['fieldName'], Validator::INSTANCE, 'DateTime');
						break;
					case 'text':
						$metadata->addRule($field['fieldName'], Validator::TYPE, 'string');
						break;
				}

				if (!isset($field['id']) || !$field['id']) {
					$metadata->addRule($field['fieldName'], $field['nullable'] ? Validator::NULLABLE : Validator::NOTNULL);
				} else {
					$metadata->addRule($field['fieldName'], Validator::NULLABLE);
				}
			}

			foreach ($emeta->associationMappings as $field) {
				if ($field['type'] == ClassMetadata::ONE_TO_ONE || $field['type'] == ClassMetadata::MANY_TO_ONE) {
					if (isset($field['declared']) && $field['declared'] != $ref->getName()) {
						continue;
					}

					$metadata->addRule($field['fieldName'], Validator::INSTANCE, $field['targetEntity']);
					$metadata->addRule($field['fieldName'],
						$field['joinColumns'][0]['nullable'] ? Validator::NULLABLE : Validator::NOTNULL
					);
				}
			}
		}
	}
Beispiel #5
0
	/**
	 * @return \Nella\Models\Service
	 */
	protected function getImageService()
	{
		return $this->container->getService('Nella\Media\ImageEntity');
	}
Beispiel #6
0
	/**
	 * @param \Nette\DI\Container
	 * @return Doctrine\Container
	 */
	public static function createServiceDoctrineContainer(Container $container)
	{
		return Doctrine\Container::create($container);
	}
Beispiel #7
0
	/**
	 * @param int
	 * @return FileEntity
	 */
	protected function getFile($id)
	{
		return $this->container->getService('Nella\Media\FileEntity')->repository->find($id);
	}
Beispiel #8
0
	/**
	 * @param \Nella\Doctrine\Container
	 * @return IdentityEntity
	 */
	public function load(\Nella\Doctrine\Container $container)
	{
		if (!$this->loaded) {
			$service = $container->getService(__CLASS__);
			$entity = $service->repository->find($this->getId());
			$entity->loaded = TRUE;
			return $entity;
		} else {
			return $this;
		}
	}