summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorThomas Mueller <thomas.mueller@tmit.eu>2013-04-18 22:12:53 +0200
committerThomas Mueller <thomas.mueller@tmit.eu>2013-04-18 22:12:53 +0200
commite1f5f00ec399d925f5db8e31f00580500d835146 (patch)
treeeb88fed912547226c945d500c88c3039707bd4bd /apps
parentfbd3445d224959cd6ee24797b62e6e25505d5620 (diff)
downloadnextcloud-server-e1f5f00ec399d925f5db8e31f00580500d835146.tar.gz
nextcloud-server-e1f5f00ec399d925f5db8e31f00580500d835146.zip
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.
Diffstat (limited to 'apps')
-rw-r--r--apps/files_external/appinfo/app.php4
-rw-r--r--apps/files_external/lib/irods.php58
2 files changed, 17 insertions, 45 deletions
diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php
index af9117ac1ef..dd0b76ed9d7 100644
--- a/apps/files_external/appinfo/app.php
+++ b/apps/files_external/appinfo/app.php
@@ -22,3 +22,7 @@ OCP\App::registerAdmin('files_external', 'settings');
if (OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes') == 'yes') {
OCP\App::registerPersonal('files_external', 'personal');
}
+
+// connecting hooks
+OCP\Util::connectHook( 'OC_User', 'post_login', 'OC\Files\Storage\iRODS', 'login' );
+
diff --git a/apps/files_external/lib/irods.php b/apps/files_external/lib/irods.php
index de4bba89667..888cf569cb9 100644
--- a/apps/files_external/lib/irods.php
+++ b/apps/files_external/lib/irods.php
@@ -20,6 +20,7 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
private $port;
private $zone;
private $root;
+ private $use_logon_credentials;
public function __construct($params) {
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->user=$params['user'];
$this->password=$params['password'];
+ $this->use_logon_credentials=$params['use_logon_credentials'];
$this->zone=$params['zone'];
$this->root=isset($params['root'])?$params['root']:'/';
if ( ! $this->root || $this->root[0]!='/') {
$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
if ( ! $this->is_dir('')) {
$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(){
return 'irods::' . $this->user . '@' . $this->host . '/' . $this->root;
}
@@ -56,49 +69,4 @@ class iRODS extends \OC\Files\Storage\StreamWrapper{
$userWithZone = $this->user.'.'.$this->zone;
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);
-// }
-// }
}