mirror of
https://github.com/nextcloud/server.git
synced 2024-08-07 03:07:59 +02:00
in order to use the ownCloud login credentials we use a login hook to grab uid and password and store it in the session.
The stored credentials will be used for and interactions with the iRODS server. Within the config UI a check box can be used to enable the credential reuse.
This commit is contained in:
parent
fbd3445d22
commit
e1f5f00ec3
@ -22,3 +22,7 @@ OCP\App::registerAdmin('files_external', 'settings');
|
|||||||
if (OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes') == 'yes') {
|
if (OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes') == 'yes') {
|
||||||
OCP\App::registerPersonal('files_external', 'personal');
|
OCP\App::registerPersonal('files_external', 'personal');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// connecting hooks
|
||||||
|
OCP\Util::connectHook( 'OC_User', 'post_login', 'OC\Files\Storage\iRODS', 'login' );
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
|
|||||||
private $port;
|
private $port;
|
||||||
private $zone;
|
private $zone;
|
||||||
private $root;
|
private $root;
|
||||||
|
private $use_logon_credentials;
|
||||||
|
|
||||||
public function __construct($params) {
|
public function __construct($params) {
|
||||||
if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
|
if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
|
||||||
@ -27,12 +28,20 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
|
|||||||
$this->port=$params['port'];
|
$this->port=$params['port'];
|
||||||
$this->user=$params['user'];
|
$this->user=$params['user'];
|
||||||
$this->password=$params['password'];
|
$this->password=$params['password'];
|
||||||
|
$this->use_logon_credentials=$params['use_logon_credentials'];
|
||||||
$this->zone=$params['zone'];
|
$this->zone=$params['zone'];
|
||||||
|
|
||||||
$this->root=isset($params['root'])?$params['root']:'/';
|
$this->root=isset($params['root'])?$params['root']:'/';
|
||||||
if ( ! $this->root || $this->root[0]!='/') {
|
if ( ! $this->root || $this->root[0]!='/') {
|
||||||
$this->root='/'.$this->root;
|
$this->root='/'.$this->root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->use_logon_credentials && isset($_SESSION['irods-credentials']) )
|
||||||
|
{
|
||||||
|
$this->user = $_SESSION['irods-credentials']['uid'];
|
||||||
|
$this->password = $_SESSION['irods-credentials']['password'];
|
||||||
|
}
|
||||||
|
|
||||||
//create the root folder if necessary
|
//create the root folder if necessary
|
||||||
if ( ! $this->is_dir('')) {
|
if ( ! $this->is_dir('')) {
|
||||||
$this->mkdir('');
|
$this->mkdir('');
|
||||||
@ -43,6 +52,10 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function login( $params ) {
|
||||||
|
$_SESSION['irods-credentials'] = $params;
|
||||||
|
}
|
||||||
|
|
||||||
public function getId(){
|
public function getId(){
|
||||||
return 'irods::' . $this->user . '@' . $this->host . '/' . $this->root;
|
return 'irods::' . $this->user . '@' . $this->host . '/' . $this->root;
|
||||||
}
|
}
|
||||||
@ -56,49 +69,4 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
|
|||||||
$userWithZone = $this->user.'.'.$this->zone;
|
$userWithZone = $this->user.'.'.$this->zone;
|
||||||
return 'rods://'.$userWithZone.':'.$this->password.'@'.$this->host.':'.$this->port.$this->root.$path;
|
return 'rods://'.$userWithZone.':'.$this->password.'@'.$this->host.':'.$this->port.$this->root.$path;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function fopen($path,$mode) {
|
|
||||||
// $this->init();
|
|
||||||
// switch($mode) {
|
|
||||||
// case 'r':
|
|
||||||
// case 'rb':
|
|
||||||
// case 'w':
|
|
||||||
// case 'wb':
|
|
||||||
// case 'a':
|
|
||||||
// case 'ab':
|
|
||||||
// //these are supported by the wrapper
|
|
||||||
// $context = stream_context_create(array('ftp' => array('overwrite' => true)));
|
|
||||||
// return fopen($this->constructUrl($path), $mode, false, $context);
|
|
||||||
// case 'r+':
|
|
||||||
// case 'w+':
|
|
||||||
// case 'wb+':
|
|
||||||
// case 'a+':
|
|
||||||
// case 'x':
|
|
||||||
// case 'x+':
|
|
||||||
// case 'c':
|
|
||||||
// case 'c+':
|
|
||||||
// //emulate these
|
|
||||||
// if (strrpos($path, '.')!==false) {
|
|
||||||
// $ext=substr($path, strrpos($path, '.'));
|
|
||||||
// } else {
|
|
||||||
// $ext='';
|
|
||||||
// }
|
|
||||||
// $tmpFile=\OCP\Files::tmpFile($ext);
|
|
||||||
// \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
|
|
||||||
// if ($this->file_exists($path)) {
|
|
||||||
// $this->getFile($path, $tmpFile);
|
|
||||||
// }
|
|
||||||
// self::$tempFiles[$tmpFile]=$path;
|
|
||||||
// return fopen('close://'.$tmpFile, $mode);
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public function writeBack($tmpFile) {
|
|
||||||
// $this->init();
|
|
||||||
// if (isset(self::$tempFiles[$tmpFile])) {
|
|
||||||
// $this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]);
|
|
||||||
// unlink($tmpFile);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user