|
|
|
|
<?php
|
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
|
|
|
|
|
|
namespace Chamilo\PluginBundle\UserRemoteService;
|
|
|
|
|
|
|
|
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
|
|
|
use Exception;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* UserRemoteService.
|
|
|
|
|
*
|
|
|
|
|
* @ORM\Table(name="plugin_user_remote_service")
|
|
|
|
|
* @ORM\Entity
|
|
|
|
|
*/
|
|
|
|
|
class UserRemoteService
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* @var int
|
|
|
|
|
*
|
|
|
|
|
* @ORM\Column(name="id", type="integer")
|
|
|
|
|
* @ORM\Id
|
|
|
|
|
* @ORM\GeneratedValue
|
|
|
|
|
*/
|
|
|
|
|
protected $id;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*
|
|
|
|
|
* @ORM\Column(name="title", type="string", length=255, nullable=false)
|
|
|
|
|
*/
|
|
|
|
|
protected $title;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var string
|
|
|
|
|
*
|
|
|
|
|
* @ORM\Column(name="url", type="string", length=255, nullable=false)
|
|
|
|
|
*/
|
|
|
|
|
protected $url;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return int
|
|
|
|
|
*/
|
|
|
|
|
public function getId()
|
|
|
|
|
{
|
|
|
|
|
return $this->id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param int $id
|
|
|
|
|
*
|
|
|
|
|
* @return $this
|
|
|
|
|
*/
|
|
|
|
|
public function setId($id)
|
|
|
|
|
{
|
|
|
|
|
$this->id = $id;
|
|
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
public function getTitle()
|
|
|
|
|
{
|
|
|
|
|
return $this->title;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param string $title
|
|
|
|
|
*
|
|
|
|
|
* @return UserRemoteService
|
|
|
|
|
*/
|
|
|
|
|
public function setTitle($title)
|
|
|
|
|
{
|
|
|
|
|
$this->title = $title;
|
|
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
public function getURL()
|
|
|
|
|
{
|
|
|
|
|
return $this->url;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param string $url
|
|
|
|
|
*
|
|
|
|
|
* @return UserRemoteService
|
|
|
|
|
*/
|
|
|
|
|
public function setURL($url)
|
|
|
|
|
{
|
|
|
|
|
$this->url = $url;
|
|
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a user-specific URL, with two extra query string parameters : 'username' and 'hash'.
|
|
|
|
|
* 'hash' is generated using $salt and $userId.
|
|
|
|
|
*
|
|
|
|
|
* @param string $username the URL query parameter 'username'
|
|
|
|
|
* @param string $userId the user identifier, to build the hash
|
|
|
|
|
* @param string $salt the salt, to build the hash
|
|
|
|
|
*
|
|
|
|
|
* @throws Exception on hash generation failure
|
|
|
|
|
*
|
|
|
|
|
* @return string the custom user URL
|
|
|
|
|
*/
|
|
|
|
|
public function getCustomUserURL($username, $userId, $salt)
|
|
|
|
|
{
|
|
|
|
|
$hash = password_hash($salt.$userId, PASSWORD_BCRYPT);
|
|
|
|
|
if (false === $hash) {
|
|
|
|
|
throw new Exception('hash generation failed');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sprintf(
|
|
|
|
|
'%s%s%s',
|
|
|
|
|
$this->url,
|
|
|
|
|
false === strpos($this->url, '?') ? '?' : '&',
|
|
|
|
|
http_build_query(
|
|
|
|
|
[
|
|
|
|
|
'username' => $username,
|
|
|
|
|
'hash' => $hash,
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|