/** * @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; }
/** * 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; }
/** * @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); } } } }
/** * @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 ); } } } }
/** * @return \Nella\Models\Service */ protected function getImageService() { return $this->container->getService('Nella\Media\ImageEntity'); }
/** * @param \Nette\DI\Container * @return Doctrine\Container */ public static function createServiceDoctrineContainer(Container $container) { return Doctrine\Container::create($container); }
/** * @param int * @return FileEntity */ protected function getFile($id) { return $this->container->getService('Nella\Media\FileEntity')->repository->find($id); }
/** * @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; } }