Conflicts: core/lostpassword/index.php core/lostpassword/resetpassword.phpremotes/origin/stable5
commit
0120f3fd62
@ -0,0 +1,12 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
$this->create('download', 'download{file}') |
||||
->requirements(array('file' => '.*')) |
||||
->actionInclude('files/download.php'); |
||||
|
@ -0,0 +1,18 @@ |
||||
{ |
||||
"description": "ownCloud gives you universal access to your files/contacts/calendar through a web interface or WebDAV.", |
||||
"homepage": "http://owncloud.org", |
||||
"license": "AGPL-3.0+", |
||||
"support": { |
||||
"email": "owncloud@kde.org", |
||||
"irc": "irc://irc.freenode.org/owncloud", |
||||
"forum": "http://forum.owncloud.org/", |
||||
"issues": "https://github.com/owncloud/core/issues" |
||||
}, |
||||
"require": { |
||||
"php": ">=5.3.2", |
||||
"symfony/routing": "2.0.*" |
||||
}, |
||||
"config": { |
||||
"vendor-dir": "3rdparty" |
||||
} |
||||
} |
@ -0,0 +1,73 @@ |
||||
OC.router_base_url = OC.webroot + '/index.php/', |
||||
OC.Router = { |
||||
routes_request: $.ajax(OC.router_base_url + 'core/routes.json', { |
||||
dataType: 'json', |
||||
success: function(jsondata) { |
||||
if (jsondata.status == 'success') { |
||||
OC.Router.routes = jsondata.data; |
||||
} |
||||
} |
||||
}), |
||||
generate:function(name, opt_params) { |
||||
if (!('routes' in this)) { |
||||
if(this.routes_request.state() != 'resolved') { |
||||
alert('wait');// wait
|
||||
} |
||||
} |
||||
if (!(name in this.routes)) { |
||||
throw new Error('The route "' + name + '" does not exist.'); |
||||
} |
||||
var route = this.routes[name]; |
||||
var params = opt_params || {}; |
||||
var unusedParams = $.extend(true, {}, params); |
||||
var url = ''; |
||||
var optional = true; |
||||
$(route.tokens).each(function(i, token) { |
||||
if ('text' === token[0]) { |
||||
url = token[1] + url; |
||||
optional = false; |
||||
|
||||
return; |
||||
} |
||||
|
||||
if ('variable' === token[0]) { |
||||
if (false === optional || !(token[3] in route.defaults) |
||||
|| ((token[3] in params) && params[token[3]] != route.defaults[token[3]])) { |
||||
var value; |
||||
if (token[3] in params) { |
||||
value = params[token[3]]; |
||||
delete unusedParams[token[3]]; |
||||
} else if (token[3] in route.defaults) { |
||||
value = route.defaults[token[3]]; |
||||
} else if (optional) { |
||||
return; |
||||
} else { |
||||
throw new Error('The route "' + name + '" requires the parameter "' + token[3] + '".'); |
||||
} |
||||
|
||||
var empty = true === value || false === value || '' === value; |
||||
|
||||
if (!empty || !optional) { |
||||
url = token[1] + encodeURIComponent(value).replace(/%2F/g, '/') + url; |
||||
} |
||||
|
||||
optional = false; |
||||
} |
||||
|
||||
return; |
||||
} |
||||
|
||||
throw new Error('The token type "' + token[0] + '" is not supported.'); |
||||
}); |
||||
if (url === '') { |
||||
url = '/'; |
||||
} |
||||
|
||||
unusedParams = $.param(unusedParams); |
||||
if (unusedParams.length > 0) { |
||||
url += '?'+unusedParams; |
||||
} |
||||
|
||||
return OC.router_base_url + url; |
||||
} |
||||
}; |
@ -0,0 +1,83 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
class OC_Core_LostPassword_Controller { |
||||
protected static function displayLostPasswordPage($error, $requested) { |
||||
OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => $error, 'requested' => $requested)); |
||||
} |
||||
|
||||
protected static function displayResetPasswordPage($success, $args) { |
||||
$route_args = array(); |
||||
$route_args['token'] = $args['token']; |
||||
$route_args['user'] = $args['user']; |
||||
OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => $success, 'args' => $route_args)); |
||||
} |
||||
|
||||
protected static function checkToken($user, $token) { |
||||
return OC_Preferences::getValue($user, 'owncloud', 'lostpassword') === hash('sha256', $token); |
||||
} |
||||
|
||||
public static function index($args) { |
||||
self::displayLostPasswordPage(false, false); |
||||
} |
||||
|
||||
public static function sendEmail($args) { |
||||
if (OC_User::userExists($_POST['user'])) { |
||||
$token = hash('sha256', OC_Util::generate_random_bytes(30).OC_Config::getValue('passwordsalt', '')); |
||||
OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword', hash('sha256', $token)); // Hash the token again to prevent timing attacks |
||||
$email = OC_Preferences::getValue($_POST['user'], 'settings', 'email', ''); |
||||
if (!empty($email)) { |
||||
$link = OC_Helper::linkToRoute('core_lostpassword_reset', array('user' => $_POST['user'], 'token' => $token)); |
||||
$link = OC_Helper::makeURLAbsolute($link); |
||||
|
||||
$tmpl = new OC_Template('core/lostpassword', 'email'); |
||||
$tmpl->assign('link', $link, false); |
||||
$msg = $tmpl->fetchPage(); |
||||
$l = OC_L10N::get('core'); |
||||
$from = 'lostpassword-noreply@' . OCP\Util::getServerHost(); |
||||
OC_Mail::send($email, $_POST['user'], $l->t('ownCloud password reset'), $msg, $from, 'ownCloud'); |
||||
echo('Mailsent'); |
||||
|
||||
self::displayLostPasswordPage(false, true); |
||||
} else { |
||||
self::displayLostPasswordPage(true, false); |
||||
} |
||||
} else { |
||||
self::displayLostPasswordPage(true, false); |
||||
} |
||||
} |
||||
|
||||
public static function reset($args) { |
||||
// Someone wants to reset their password: |
||||
if(self::checkToken($args['user'], $args['token'])) { |
||||
self::displayResetPasswordPage(false, $args); |
||||
} else { |
||||
// Someone lost their password |
||||
self::displayLostPasswordPage(false, false); |
||||
} |
||||
} |
||||
|
||||
public static function resetPassword($args) { |
||||
if (self::checkToken($args['user'], $args['token'])) { |
||||
if (isset($_POST['password'])) { |
||||
if (OC_User::setPassword($args['user'], $_POST['password'])) { |
||||
OC_Preferences::deleteKey($args['user'], 'owncloud', 'lostpassword'); |
||||
OC_User::unsetMagicInCookie(); |
||||
self::displayResetPasswordPage(true, $args); |
||||
} else { |
||||
self::displayResetPasswordPage(false, $args); |
||||
} |
||||
} else { |
||||
self::reset($args); |
||||
} |
||||
} else { |
||||
// Someone lost their password |
||||
self::displayLostPasswordPage(false, false); |
||||
} |
||||
} |
||||
} |
@ -1,35 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Frank Karlitschek frank@owncloud.org |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
$RUNTIME_NOAPPS = true; //no apps |
||||
require_once '../../lib/base.php'; |
||||
|
||||
|
||||
// Someone lost their password: |
||||
if (isset($_POST['user'])) { |
||||
if (OC_User::userExists($_POST['user'])) { |
||||
$token = hash("sha256", OC_Util::generate_random_bytes(30).OC_Config::getValue('passwordsalt', '')); |
||||
OC_Preferences::setValue($_POST['user'], 'owncloud', 'lostpassword', hash("sha256", $token)); // Hash the token again to prevent timing attacks |
||||
$email = OC_Preferences::getValue($_POST['user'], 'settings', 'email', ''); |
||||
if (!empty($email)) { |
||||
$link = OC_Helper::linkToAbsolute('core/lostpassword', 'resetpassword.php', array('user' => $_POST['user'], 'token' => $token)); |
||||
$tmpl = new OC_Template('core/lostpassword', 'email'); |
||||
$tmpl->assign('link', $link, false); |
||||
$msg = $tmpl->fetchPage(); |
||||
$l = OC_L10N::get('core'); |
||||
$from = 'lostpassword-noreply@' . OCP\Util::getServerHost(); |
||||
OC_MAIL::send($email, $_POST['user'], $l->t('ownCloud password reset'), $msg, $from, 'ownCloud'); |
||||
echo('sent'); |
||||
} |
||||
OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => true)); |
||||
} else { |
||||
OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => true, 'requested' => false)); |
||||
} |
||||
} else { |
||||
OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => false)); |
||||
} |
@ -1,27 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Frank Karlitschek frank@owncloud.org |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
$RUNTIME_NOAPPS = true; //no apps |
||||
require_once '../../lib/base.php'; |
||||
|
||||
// Someone wants to reset their password: |
||||
if(isset($_GET['token']) && isset($_GET['user']) && OC_Preferences::getValue($_GET['user'], 'owncloud', 'lostpassword') === hash("sha256", $_GET['token'])) { |
||||
if (isset($_POST['password'])) { |
||||
if (OC_User::setPassword($_GET['user'], $_POST['password'])) { |
||||
OC_Preferences::deleteKey($_GET['user'], 'owncloud', 'lostpassword'); |
||||
OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => true)); |
||||
} else { |
||||
OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => false)); |
||||
} |
||||
} else { |
||||
OC_Template::printGuestPage('core/lostpassword', 'resetpassword', array('success' => false)); |
||||
} |
||||
} else { |
||||
// Someone lost their password |
||||
OC_Template::printGuestPage('core/lostpassword', 'lostpassword', array('error' => false, 'requested' => false)); |
||||
} |
@ -0,0 +1,60 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
require_once('settings/routes.php'); |
||||
|
||||
// Core ajax actions |
||||
// AppConfig |
||||
$this->create('core_ajax_appconfig', '/core/ajax/appconfig.php') |
||||
->actionInclude('core/ajax/appconfig.php'); |
||||
// RequestToken |
||||
$this->create('core_ajax_requesttoken', '/core/ajax/requesttoken.php') |
||||
->actionInclude('core/ajax/requesttoken.php'); |
||||
// Share |
||||
$this->create('core_ajax_share', '/core/ajax/share.php') |
||||
->actionInclude('core/ajax/share.php'); |
||||
// Translations |
||||
$this->create('core_ajax_translations', '/core/ajax/translations.php') |
||||
->actionInclude('core/ajax/translations.php'); |
||||
// VCategories |
||||
$this->create('core_ajax_vcategories_add', '/core/ajax/vcategories/add.php') |
||||
->actionInclude('core/ajax/vcategories/add.php'); |
||||
$this->create('core_ajax_vcategories_delete', '/core/ajax/vcategories/delete.php') |
||||
->actionInclude('core/ajax/vcategories/delete.php'); |
||||
$this->create('core_ajax_vcategories_edit', '/core/ajax/vcategories/edit.php') |
||||
->actionInclude('core/ajax/vcategories/edit.php'); |
||||
// Routing |
||||
$this->create('core_ajax_routes', '/core/routes.json') |
||||
->action('OC_Router', 'JSRoutes'); |
||||
|
||||
OC::$CLASSPATH['OC_Core_LostPassword_Controller'] = 'core/lostpassword/controller.php'; |
||||
$this->create('core_lostpassword_index', '/lostpassword/') |
||||
->get() |
||||
->action('OC_Core_LostPassword_Controller', 'index'); |
||||
$this->create('core_lostpassword_send_email', '/lostpassword/') |
||||
->post() |
||||
->action('OC_Core_LostPassword_Controller', 'sendEmail'); |
||||
$this->create('core_lostpassword_reset', '/lostpassword/reset/{token}/{user}') |
||||
->get() |
||||
->action('OC_Core_LostPassword_Controller', 'reset'); |
||||
$this->create('core_lostpassword_reset_password', '/lostpassword/reset/{token}/{user}') |
||||
->post() |
||||
->action('OC_Core_LostPassword_Controller', 'resetPassword'); |
||||
|
||||
// Not specifically routed |
||||
$this->create('app_css', '/apps/{app}/{file}') |
||||
->requirements(array('file' => '.*.css')) |
||||
->action('OC', 'loadCSSFile'); |
||||
$this->create('app_index_script', '/apps/{app}/') |
||||
->defaults(array('file' => 'index.php')) |
||||
//->requirements(array('file' => '.*.php')) |
||||
->action('OC', 'loadAppScriptFile'); |
||||
$this->create('app_script', '/apps/{app}/{file}') |
||||
->defaults(array('file' => 'index.php')) |
||||
->requirements(array('file' => '.*.php')) |
||||
->action('OC', 'loadAppScriptFile'); |
@ -0,0 +1,112 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
use Symfony\Component\Routing\Route; |
||||
|
||||
class OC_Route extends Route { |
||||
/** |
||||
* Specify the method when this route is to be used |
||||
* |
||||
* @param string $method HTTP method (uppercase) |
||||
*/ |
||||
public function method($method) { |
||||
$this->setRequirement('_method', strtoupper($method)); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Specify POST as the method to use with this route |
||||
*/ |
||||
public function post() { |
||||
$this->method('POST'); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Specify GET as the method to use with this route |
||||
*/ |
||||
public function get() { |
||||
$this->method('GET'); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Specify PUT as the method to use with this route |
||||
*/ |
||||
public function put() { |
||||
$this->method('PUT'); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Specify DELETE as the method to use with this route |
||||
*/ |
||||
public function delete() { |
||||
$this->method('DELETE'); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Defaults to use for this route |
||||
* |
||||
* @param array $defaults The defaults |
||||
*/ |
||||
public function defaults($defaults) { |
||||
$action = $this->getDefault('action'); |
||||
$this->setDefaults($defaults); |
||||
if (isset($defaults['action'])) { |
||||
$action = $defaults['action']; |
||||
} |
||||
$this->action($action); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Requirements for this route |
||||
* |
||||
* @param array $requirements The requirements |
||||
*/ |
||||
public function requirements($requirements) { |
||||
$method = $this->getRequirement('_method'); |
||||
$this->setRequirements($requirements); |
||||
if (isset($requirements['_method'])) { |
||||
$method = $requirements['_method']; |
||||
} |
||||
if ($method) { |
||||
$this->method($method); |
||||
} |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* The action to execute when this route matches |
||||
* @param string|callable $class the class or a callable |
||||
* @param string $function the function to use with the class |
||||
* |
||||
* This function is called with $class set to a callable or |
||||
* to the class with $function |
||||
*/ |
||||
public function action($class, $function = null) { |
||||
$action = array($class, $function); |
||||
if (is_null($function)) { |
||||
$action = $class; |
||||
} |
||||
$this->setDefault('action', $action); |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* The action to execute when this route matches, includes a file like |
||||
* it is called directly |
||||
* @param $file |
||||
*/ |
||||
public function actionInclude($file) { |
||||
$function = create_function('$param', 'unset($param["_route"]);$_GET=array_merge($_GET,$param);unset($param);require_once "'.$file.'";'); |
||||
$this->action($function); |
||||
} |
||||
} |
@ -0,0 +1,146 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
use Symfony\Component\Routing\Matcher\UrlMatcher; |
||||
use Symfony\Component\Routing\Generator\UrlGenerator; |
||||
use Symfony\Component\Routing\RequestContext; |
||||
use Symfony\Component\Routing\RouteCollection; |
||||
//use Symfony\Component\Routing\Route; |
||||
|
||||
class OC_Router { |
||||
protected $collections = array(); |
||||
protected $collection = null; |
||||
protected $root = null; |
||||
|
||||
protected $generator= null; |
||||
|
||||
public function __construct() { |
||||
$baseUrl = OC_Helper::linkTo('', 'index.php'); |
||||
$method = $_SERVER['REQUEST_METHOD']; |
||||
$host = OC_Request::serverHost(); |
||||
$schema = OC_Request::serverProtocol(); |
||||
$this->context = new RequestContext($baseUrl, $method, $host, $schema); |
||||
// TODO cache |
||||
$this->root = $this->getCollection('root'); |
||||
} |
||||
|
||||
/** |
||||
* loads the api routes |
||||
*/ |
||||
public function loadRoutes() { |
||||
foreach(OC_APP::getEnabledApps() as $app){ |
||||
$file = OC_App::getAppPath($app).'/appinfo/routes.php'; |
||||
if(file_exists($file)){ |
||||
$this->useCollection($app); |
||||
require_once($file); |
||||
$collection = $this->getCollection($app); |
||||
$this->root->addCollection($collection, '/apps/'.$app); |
||||
} |
||||
} |
||||
$this->useCollection('root'); |
||||
require_once('core/routes.php'); |
||||
} |
||||
|
||||
protected function getCollection($name) { |
||||
if (!isset($this->collections[$name])) { |
||||
$this->collections[$name] = new RouteCollection(); |
||||
} |
||||
return $this->collections[$name]; |
||||
} |
||||
|
||||
/** |
||||
* Sets the collection to use for adding routes |
||||
* |
||||
* @param string $name Name of the colletion to use. |
||||
*/ |
||||
public function useCollection($name) { |
||||
$this->collection = $this->getCollection($name); |
||||
} |
||||
|
||||
/** |
||||
* Create a OC_Route. |
||||
* |
||||
* @param string $name Name of the route to create. |
||||
* @param string $pattern The pattern to match |
||||
* @param array $defaults An array of default parameter values |
||||
* @param array $requirements An array of requirements for parameters (regexes) |
||||
*/ |
||||
public function create($name, $pattern, array $defaults = array(), array $requirements = array()) { |
||||
$route = new OC_Route($pattern, $defaults, $requirements); |
||||
$this->collection->add($name, $route); |
||||
return $route; |
||||
} |
||||
|
||||
/** |
||||
* Find the route matching $url. |
||||
* |
||||
* @param string $url The url to find |
||||
*/ |
||||
public function match($url) { |
||||
$matcher = new UrlMatcher($this->root, $this->context); |
||||
$parameters = $matcher->match($url); |
||||
if (isset($parameters['action'])) { |
||||
$action = $parameters['action']; |
||||
if (!is_callable($action)) { |
||||
var_dump($action); |
||||
throw new Exception('not a callable action'); |
||||
} |
||||
unset($parameters['action']); |
||||
call_user_func($action, $parameters); |
||||
} elseif (isset($parameters['file'])) { |
||||
include ($parameters['file']); |
||||
} else { |
||||
throw new Exception('no action available'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Get the url generator |
||||
* |
||||
*/ |
||||
public function getGenerator() |
||||
{ |
||||
if (null !== $this->generator) { |
||||
return $this->generator; |
||||
} |
||||
|
||||
return $this->generator = new UrlGenerator($this->root, $this->context); |
||||
} |
||||
|
||||
/** |
||||
* Generate url based on $name and $parameters |
||||
* |
||||
* @param string $name Name of the route to use. |
||||
* @param array $parameters Parameters for the route |
||||
*/ |
||||
public function generate($name, $parameters = array(), $absolute = false) |
||||
{ |
||||
return $this->getGenerator()->generate($name, $parameters, $absolute); |
||||
} |
||||
|
||||
/** |
||||
* Generate JSON response for routing in javascript |
||||
*/ |
||||
public static function JSRoutes() |
||||
{ |
||||
// TODO: http caching |
||||
$routes = array(); |
||||
$router = OC::getRouter(); |
||||
$root = $router->getCollection('root'); |
||||
foreach($root->all() as $name => $route) { |
||||
$compiled_route = $route->compile(); |
||||
$defaults = $route->getDefaults(); |
||||
unset($defaults['action']); |
||||
$routes[$name] = array( |
||||
'tokens' => $compiled_route->getTokens(), |
||||
'defaults' => $defaults, |
||||
); |
||||
} |
||||
OCP\JSON::success ( array( 'data' => $routes ) ); |
||||
} |
||||
} |
@ -0,0 +1,62 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
// Settings pages |
||||
$this->create('settings_help', '/settings/help') |
||||
->actionInclude('settings/help.php'); |
||||
$this->create('settings_personal', '/settings/personal') |
||||
->actionInclude('settings/personal.php'); |
||||
$this->create('settings_settings', '/settings') |
||||
->actionInclude('settings/settings.php'); |
||||
$this->create('settings_users', '/settings/users') |
||||
->actionInclude('settings/users.php'); |
||||
$this->create('settings_apps', '/settings/apps') |
||||
->actionInclude('settings/apps.php'); |
||||
$this->create('settings_admin', '/settings/admin') |
||||
->actionInclude('settings/admin.php'); |
||||
// Settings ajax actions |
||||
// users |
||||
$this->create('settings_ajax_userlist', '/settings/ajax/userlist') |
||||
->actionInclude('settings/ajax/userlist.php'); |
||||
$this->create('settings_ajax_createuser', '/settings/ajax/createuser.php') |
||||
->actionInclude('settings_ajax_createuser'); |
||||
$this->create('settings_ajax_removeuser', '/settings/ajax/removeuser.php') |
||||
->actionInclude('settings/ajax/removeuser.php'); |
||||
$this->create('settings_ajax_setquota', '/settings/ajax/setquota.php') |
||||
->actionInclude('settings/ajax/setquota.php'); |
||||
$this->create('settings_ajax_creategroup', '/settings/ajax/creategroup.php') |
||||
->actionInclude('settings_ajax_creategroup'); |
||||
$this->create('settings_ajax_togglegroups', '/settings/ajax/togglegroups.php') |
||||
->actionInclude('settings/ajax/togglegroups.php'); |
||||
$this->create('settings_ajax_togglesubadmins', '/settings/ajax/togglesubadmins.php') |
||||
->actionInclude('settings/ajax/togglesubadmins.php'); |
||||
$this->create('settings_ajax_removegroup', '/settings/ajax/removegroup.php') |
||||
->actionInclude('settings/ajax/removegroup.php'); |
||||
$this->create('settings_ajax_changepassword', '/settings/ajax/changepassword.php') |
||||
->actionInclude('settings/ajax/changepassword.php'); |
||||
// personel |
||||
$this->create('settings_ajax_lostpassword', '/settings/ajax/lostpassword.php') |
||||
->actionInclude('settings/ajax/lostpassword.php'); |
||||
$this->create('settings_ajax_setlanguage', '/settings/ajax/setlanguage.php') |
||||
->actionInclude('settings/ajax/setlanguage.php'); |
||||
// apps |
||||
$this->create('settings_ajax_apps_ocs', '/settings/ajax/apps/ocs.php') |
||||
->actionInclude('settings/ajax/apps/ocs.php'); |
||||
$this->create('settings_ajax_enableapp', '/settings/ajax/enableapp.php') |
||||
->actionInclude('settings/ajax/enableapp.php'); |
||||
$this->create('settings_ajax_disableapp', '/settings/ajax/disableapp.php') |
||||
->actionInclude('settings/ajax/disableapp.php'); |
||||
// admin |
||||
$this->create('settings_ajax_getlog', '/settings/ajax/getlog.php') |
||||
->actionInclude('settings/ajax/getlog.php'); |
||||
$this->create('settings_ajax_setloglevel', '/settings/ajax/setloglevel.php') |
||||
->actionInclude('settings/ajax/setloglevel.php'); |
||||
|
||||
// apps/user_openid |
||||
$this->create('settings_ajax_openid', '/settings/ajax/openid.php') |
||||
->actionInclude('settings/ajax/openid.php'); |
Loading…
Reference in new issue