diff --git a/plugins/cas_auth_unl/.gitignore b/plugins/cas_auth_unl/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..590b2212bcc4a4d4b7f4dcc3cbadbb54786860d3 --- /dev/null +++ b/plugins/cas_auth_unl/.gitignore @@ -0,0 +1,2 @@ +vendor +session_map.json \ No newline at end of file diff --git a/plugins/cas_auth_unl/README.txt b/plugins/cas_auth_unl/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..546350bb2ee8b6cd2cf9ea220d9bc034086d0316 --- /dev/null +++ b/plugins/cas_auth_unl/README.txt @@ -0,0 +1,32 @@ + + + + + + + +Built upon Xavier Roussel's cas_auth plugin +http://code.google.com/p/elgg-cas/ +His README below: + +************************* +Elgg is an open source social networking platform. + +CAS (Central Authentification Service) is an SSO. + +This project tries to allow CAS authentification in Elgg. The idea is to authenticate with CAS, then look up the user info in LDAP +and authenticate the user in Elgg. + +This plugin has been widely built on the ldap_auth plugin from Misja Hoebe and is inspired from the CAS authentification used in +Claroline : www.claroline.net + +You can edit the config in the Tool administration section by providing CAS host, port and URI. + +-- + +Xavier Roussel +Responsable technique - TICE +Direction des Systèmes d'Information - UVSQ +xavier.roussel@uvsq.fr +www.uvsq.fr +www.tice.uvsq.fr \ No newline at end of file diff --git a/plugins/cas_auth_unl/actions/getemail.php b/plugins/cas_auth_unl/actions/getemail.php new file mode 100644 index 0000000000000000000000000000000000000000..168d9fcc32d0e324caabfd54518e076af849fb4e --- /dev/null +++ b/plugins/cas_auth_unl/actions/getemail.php @@ -0,0 +1,38 @@ +<?php + + /** + * Elgg UNL SSO get email registration action + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2009 + * @link http://elgg.org/ + */ + + global $CONFIG; + + action_gatekeeper(); + + $email = get_input('email'); + $email = sanitise_string($email); + $view = get_input('view'); + + if (is_email_address($email)) { + if (!get_user_by_email($email)) { + $ts = time(); + $token = generate_action_token($ts); + forward($CONFIG->url.'action/login?usecas=yes&email='.$email.'&__elgg_ts='.$ts.'&__elgg_token='.$token.'&view='.$view); + } else { + register_error(elgg_echo("Sorry, that email has already been registered. Please try again.")); + } + } else { + register_error(elgg_echo("Sorry, that is not a complete email address. Please try again.")); + } + + + + forward($CONFIG->url . 'pg/getemail?e=' . urlencode($email)); + +?> \ No newline at end of file diff --git a/plugins/cas_auth_unl/actions/login.php b/plugins/cas_auth_unl/actions/login.php new file mode 100644 index 0000000000000000000000000000000000000000..6b04f40ff58bdce96ec8d7a84f49d630bb6e98cf --- /dev/null +++ b/plugins/cas_auth_unl/actions/login.php @@ -0,0 +1,99 @@ +<?php +/** + * Elgg UNL CAS authentication login action + * + * @package cas_auth_unl + * @license BSD http://www1.unl.edu/wdn/wiki/Software_License + * @author University of Nebraska-Lincoln + * @copyright 2010 Regents of the University of Nebraska + * @link http://www.unl.edu/ + * + * Builds upon the original login action at elgg/actions/login.php by Curverider Ltd + * + */ + +// Get $_GET inputs +$username = get_input('username'); +$password = get_input("password"); +$persistent = get_input("persistent", false); +$usecas = get_input('usecas'); +//this is available once they have given their email +$email = get_input('email'); +//look for view=mobile +$view = get_input('view'); + +// 1. Do the regular elgg login if username and password are set +$result = false; +if (!empty($username) && !empty($password)) { + if ($user = authenticate($username,$password)) { + $result = login($user, $persistent); + } +} + +// 2. Otherwise try CAS if that button was clicked +if ($usecas == 'yes') { + $casObject = new elggSimpleCas(); + if (!$casObject->checkCas()) { + global $CONFIG; + $ts = time(); + $token = generate_action_token($ts); + $url = $CONFIG->url; + if (strpos($url, 'http') !== 0) { + $url = 'https:' . $url; + } + SimpleCAS::setURL($url.'action/login?usecas=yes&__elgg_ts='.$ts.'&__elgg_token='.$token.'&view='.$view); + $casObject->forceCas(); + } else { + $cas_user = $casObject->getUserCas(); + if ($user = $casObject->casAuthenticate($cas_user,$email,$view)) { + $result = login($user); + if ($result) + $_SESSION['loggedInWithCas'] = true; + } + } +} + +// Set the system_message as appropriate +if ($result) { + system_message(elgg_echo('loginok')); + if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) { + $forward_url = $_SESSION['last_forward_from']; + unset($_SESSION['last_forward_from']); + forward($forward_url); + } else { + if ( (isadminloggedin()) && (!datalist_get('first_admin_login'))) { + system_message(elgg_echo('firstadminlogininstructions')); + datalist_set('first_admin_login', time()); + + forward('pg/admin/plugins'); + } else if ($_SESSION['user']->last_login == '0' && $view != 'mobile') { + forward('pg/profile/'.$_SESSION['username'].'/edit/?firstlogin=yes'); + } else if (get_input('returntoreferer')) { + forward($_SERVER['HTTP_REFERER']); + } else { + forward('pg/dashboard/'); + } + } +} else { + $error_msg = elgg_echo('loginerror'); + // figure out why the login failed + if (!empty($username) && !empty($password)) { + // See if it exists and is disabled + $access_status = access_get_show_hidden_status(); + access_show_hidden_entities(true); + if (($user = get_user_by_username($username)) && !$user->validated) { + // give plugins a chance to respond + if (!trigger_plugin_hook('unvalidated_login_attempt','user',array('entity'=>$user))) { + // if plugins have not registered an action, the default action is to + // trigger the validation event again and assume that the validation + // event will display an appropriate message + trigger_elgg_event('validate', 'user', $user); + } + } else { + register_error(elgg_echo('loginerror')); + } + access_show_hidden_entities($access_status); + } else { + register_error(elgg_echo('loginerror')); + } +} diff --git a/plugins/cas_auth_unl/actions/logout.php b/plugins/cas_auth_unl/actions/logout.php new file mode 100644 index 0000000000000000000000000000000000000000..ec34fd40a1f0501b74122eb254ed6c362cf40140 --- /dev/null +++ b/plugins/cas_auth_unl/actions/logout.php @@ -0,0 +1,32 @@ +<?php +/** + * Elgg logout action for use with UNL CAS + * + * @package Elgg + * @subpackage Core + * @overwritten cas_auth_unl/actions/logout.php + * @author Curverider Ltd + * @link http://elgg.org/ + */ + +// Save this session value since the next step wipes it out +$loggedInWithCas = $_SESSION['loggedInWithCas']; + +// Log out +$result = logout(); + +// Set the system_message as appropriate +if ($result) { + system_message(elgg_echo('logoutok')); +} else { + register_error(elgg_echo('logouterror')); +} + +// We've destoyed all the Elgg session data, now do CAS logout if neccessary +// Due to problems getting the SimpleCAS logout to work, we're just forwarding to the right URL since +// the Elgg logout function above took care of destroying the session, which is all the SimpleCAS logout +// was doing anyway. +if ($loggedInWithCas) { + global $CONFIG; + forward('https://login.unl.edu/cas/logout?url='.$CONFIG->url); +} diff --git a/plugins/cas_auth_unl/composer.json b/plugins/cas_auth_unl/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..236d9a90d0d89b40287551f71d4bf59a4cb7a09c --- /dev/null +++ b/plugins/cas_auth_unl/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "jasig/phpcas": "~1.3" + } +} \ No newline at end of file diff --git a/plugins/cas_auth_unl/composer.lock b/plugins/cas_auth_unl/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..4d158275cda2c309b0c8967e29f3f48eccd2cbf0 --- /dev/null +++ b/plugins/cas_auth_unl/composer.lock @@ -0,0 +1,73 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "c72657decb399fc38e48dad429f7985b", + "content-hash": "3c9c7d5916350b6e3fdebf1a226410b8", + "packages": [ + { + "name": "jasig/phpcas", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/Jasig/phpCAS.git", + "reference": "8c74d21630f74278270830fdbdb0c1317bce3f0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jasig/phpCAS/zipball/8c74d21630f74278270830fdbdb0c1317bce3f0a", + "reference": "8c74d21630f74278270830fdbdb0c1317bce3f0a", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "source/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joachim Fritschi", + "homepage": "https://wiki.jasig.org/display/~fritschi" + }, + { + "name": "Adam Franco", + "homepage": "https://wiki.jasig.org/display/~adamfranco" + } + ], + "description": "Provides a simple API for authenticating users against a CAS server", + "homepage": "https://wiki.jasig.org/display/CASC/phpCAS", + "keywords": [ + "cas", + "jasig" + ], + "time": "2015-11-16 20:44:36" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/plugins/cas_auth_unl/manifest.xml b/plugins/cas_auth_unl/manifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a60f2b2f1f3c4dc0d6451a6c4b848e1f881aa4f --- /dev/null +++ b/plugins/cas_auth_unl/manifest.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest> + <field key="author" value="University of Nebraska-Lincoln" /> + <field key="version" value="1.0" /> + <field key="description" value="CAS Authetication. Modified from the original LDAP plugin for use at UNL." ></field> + <field key="website" value="http://www.unl.edu/" /> + <field key="copyright" value="2010 Regents of the University of Nebraska " /> + <field key="licence" value="BSD http://www1.unl.edu/wdn/wiki/Software_License" /> +</plugin_manifest> diff --git a/plugins/cas_auth_unl/start.php b/plugins/cas_auth_unl/start.php new file mode 100644 index 0000000000000000000000000000000000000000..521a672d2e4b0ee64e607b49398a9373db7859aa --- /dev/null +++ b/plugins/cas_auth_unl/start.php @@ -0,0 +1,332 @@ +<?php + /** + * Elgg UNL CAS authentication + * + * @package cas_auth_unl + * @license BSD http://www1.unl.edu/wdn/wiki/Software_License + * @author University of Nebraska-Lincoln + * @copyright 2010 Regents of the University of Nebraska + * @link http://www.unl.edu/ + */ + + global $CONFIG; + + set_include_path(dirname(dirname(dirname(dirname(__FILE__)))).'/lib/php'.PATH_SEPARATOR.get_include_path()); + + + require_once __DIR__ . '/vendor/autoload.php'; + require_once 'peoplefinder/include.php'; + // http://code.google.com/p/simplecas/ + //require_once 'SimpleCAS/Autoload.php'; + //require_once 'HTTP/Request2.php'; + + + function cas_auth_unl_init() { + $auth = new elggSimpleCas(); + $auth->autoLogin(); + $auth->singleLogOut(); + } + + + register_action("getemail",true,$CONFIG->pluginspath . "cas_auth_unl/actions/getemail.php"); + register_action("login",true,$CONFIG->pluginspath. "cas_auth_unl/actions/login.php"); + register_action("logout",false,$CONFIG->pluginspath. "cas_auth_unl/actions/logout.php"); + + // Fire up the plugin initialization using the elgg handler + register_elgg_event_handler('init','system','cas_auth_unl_init'); + + + + // Set up login page, this creates the url /pg/login to be used as our login page + register_page_handler('caslogin', 'login_page_handler'); + /* set up getemail page */ + register_page_handler('getemail', 'getemail_page_handler'); + + function login_page_handler($page) { + // If we're not logged in, display the login page + if (!isloggedin()) { + $auth = new elggSimpleCas(); + $auth->forceCas(); + } else { + // Otherwise, forward to the index page + forward(); + } + } + function getemail_page_handler($page) { + if (!isloggedin()) { + page_draw(elgg_echo('Your Email'), elgg_view("account/forms/getemail")); + } else { + forward(); + } + } + + + + + + + +class elggSimpleCas { + + var $client; + var $casInitialized = false; + + const DIRECTORY_URL = 'http://directory.unl.edu/'; + + function __construct() { + if (!\phpCAS::isInitialized()) { + \phpCAS::setDebug(); + \phpCAS::setVerbose(true); + \phpCAS::client(CAS_VERSION_2_0, 'login.unl.edu', 443, 'cas', false); + \phpCAS::setNoCasServerValidation(); + //TODO: \phpCAS::setCasServerCACert($options['CERT_PATH']); + + \phpCAS::setPostAuthenticateCallback(function($logoutTicket) { + $auth = new elggSimpleCas(); + $auth->loginOrRegister(\phpCAS::getUser()); + + $session = elgg_get_session(); + + $file = $this->getSessionMapFileName(); + if (!file_exists($file)) { + //Create it if it doesn't exist + file_put_contents($file, json_encode(array())); + } + + $map = json_decode(file_get_contents($file), true); + $map[$logoutTicket] = array( + 'session_id' => $session->getId(), + 'date_created' => time() + ); + + file_put_contents($file, json_encode($map)); + }); + + \phpCAS::setSingleSignoutCallback(function ($logoutTicket) { + $file = $this->getSessionMapFileName(); + + if (!file_exists($file)) { + return false; + } + + $map = json_decode(file_get_contents($file), true); + + if (!isset($map[$logoutTicket])) { + return false; + } + + $handler = new Elgg\Http\DatabaseSessionHandler(_elgg_services()->db); + $handler->destroy($map[$logoutTicket]['session_id']); + + }); + + } + } + + protected function getSessionMapFileName() + { + return sys_get_temp_dir() .'/elgg_session_map_' . md5(__DIR__) . '.json'; + } + + public function singleLogOut() + { + \phpCAS::handleLogoutRequests(false); + } + + public function autoLogin() + { + if (!array_key_exists('unl_sso', $_COOKIE)) { + //No unl_sso cookie was found, no need to auto-login. + return; + } + + if (elgg_get_logged_in_user_entity()) { + //We are already logged in, no need to auto-login + return; + } + + //Everything looks good. Log in! + + $result = \phpCAS::checkAuthentication(); + //try { + + //} catch (\CAS_AuthenticationException $e) { + //Because Elgg changes the session ID on us here, + //CAS will try to authenticate the new session ID and fail... + //} + + if ($result) { + \phpCAS::renewAuthentication(); + //$this->loginOrRegister(\phpCAS::getUser()); + } + } + + + protected function loginOrRegister($unl_uid) + { + $elgg_uid = $this->toElggUID($unl_uid); + $user = get_user_by_username($elgg_uid); + + if (!$user) { + $this->register($unl_uid); + $this->login($unl_uid); + } else { + $this->login($unl_uid); + } + } + + protected function login($unl_uid) + { + $user = get_user_by_username($this->toElggUID($unl_uid)); + login($user); + + } + + protected function register($unl_uid) + { + $elgg_uid = $this->toElggUID($unl_uid); + $directory_info = $this->getDirectoryInfo($unl_uid); + + + $name = 'unknown'; + $email = 'unknown'; //TODO: What should we do when a student doesn't have an email? + + if (isset($directory_info['name'])) { + $name = $directory_info['name']; + } + if (isset($directory_info['email'])) { + $email = $directory_info['email']; + } + + $password = generate_random_cleartext_password(); + + $user_guid = register_user($elgg_uid, $password, $name, $email, false, 0, '', true); + + if (!$user_guid) { + register_error(elgg_echo("registerbad")); + } + + return true; + } + + protected function getDirectoryInfo($uid) + { + $info = array(); + + if (!$json = @file_get_contents(self::DIRECTORY_URL . '?uid=' . $uid . '&format=json')) { + return $info; + } + + if (!$json = json_decode($json, true)) { + return $info; + } + + $map = array( + 'givenName' => 'first_name', + 'sn' => 'last_name', + 'mail' => 'email' + ); + + foreach ($map as $from => $to) { + if (isset($json[$from][0])) { + $info[$to] = $json[$from][0]; + } + } + + $info['name'] = $info['first_name'] . ' ' . $info['last_name']; + + return $info; + } + + protected function toElggUID($unl_uid) + { + $unl_uid = str_replace('-','_',$unl_uid); + return 'unl_' . $unl_uid; + } + + public function forceCas() { + \phpCAS::forceAuthentication(); + } + + public function checkCas() { + return \phpCAS::isAuthenticated(); + } + + public function getUserCas() { + return \phpCAS::getUser(); + } + + public function logoutCas() { + \phpCAS::logout(); + } + + public function casAuthenticate($username,$email="",$view=""){ + if (empty($username)) + return false; + + global $CONFIG; + + // we're making this copy for use in the peoplefinderservices call later + // we dont want to call peoplefinderservices here since we dont need to every time a SSO user logs in + $casusername = $username; + + //We're going to make every UNL SSO user have an elgg profile name as such: unl_erasmussen2 + //and not allow friends of unl who register via elgg to pick names that begin with "unl_" + //This way, we won't have to deal with the case where someone registers erasmussen2 on elgg, then + //the real erasmussen2 signs in for the first time with UNL SSO and is logged in as the elgg user erasmussen2 + //rather then having a new account created. + $username = 'unl_' . $username; + //Replace the hyphen in a student's name with an underscore + $username = str_replace('-','_',$username); + + if ($user = get_user_by_username($username)) { + // User exists, return the user object + return $user; + } else { + // Valid CAS login but user hasn't been registered in Planet Red yet + // We end up going through here twice, first time grabs email from Peoplefinder and forwards to the getemail validation page to ask + // them if the email is correct, then when we return with the email we register the user in elgg + + $pf_user_info = peoplefinderServices($casusername); + if(!empty($pf_user_info->cn)) + $name = (string)$pf_user_info->cn; + else //A peoplefinder record does not exist because they've set their privacy flag so set display name to username so register_user below doesn't break + $name = $username; + + if (empty($email)){ + if($pf_user_info->mail) + forward($CONFIG->url.'pg/getemail?e='.$pf_user_info->mail.'&view='.$view); + else + forward($CONFIG->url.'pg/getemail?view='.$view); + } + + try { + $password = generate_random_cleartext_password(); + if ($user_guid = register_user($username, $password, $name, $email, false, 0, '', true)) { + $thisuser = get_user($user_guid); + + if(!empty($pf_user_info->cn)){ + //pre-populate profile fields with data from Peoplefinder Services if available + $address = $pf_user_info->formatPostalAddress(); + $thisuser->profile_country = 'USA'; + $thisuser->profile_state = $address['region']; + $thisuser->profile_city = $address['locality']; + if($address['locality'] == 'Omaha') { + $thisuser->longitude = -95.9; + $thisuser->latitude = 41.25; + } else { //this is going to cover Lincoln and everyone else + $thisuser->longitude = -96.7; + $thisuser->latitude = 40.82; + } + } + + return $thisuser; + } else { + register_error(elgg_echo("registerbad")); + } + } catch (RegistrationException $r) { + register_error($r->getMessage()); + } + } + } +} diff --git a/plugins/cas_auth_unl/views/default/account/forms/getemail.php b/plugins/cas_auth_unl/views/default/account/forms/getemail.php new file mode 100644 index 0000000000000000000000000000000000000000..67dde5d84e3f712000b68ab8beadc656ec6bd86b --- /dev/null +++ b/plugins/cas_auth_unl/views/default/account/forms/getemail.php @@ -0,0 +1,36 @@ +<?php + + /** + * Elgg Get Email Only SSO register form + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2009 + * @link http://elgg.org/ + */ + + // if we're returning from a failed email validation, we'll put the failed email in the email form field + $theiremail = get_input('e'); + +?> + + <h2 class="sec_header">Email Verification</h2> + <div class="three_col left"> + <p>We just want to make sure we have your correct e-mail and then we'll log you in.</p> + <?php + $form_body = "<p><label>" . elgg_echo('email') . "<br />" . elgg_view('input/text' , array('internalname' => 'email', 'class' => "general-textarea", 'value' => $theiremail)) . "</label><br />"; + $form_body .= elgg_view('input/submit', array('value' => elgg_echo('Complete Registration and Login!'))) ."</p>"; + + $ts = time(); + $token = generate_action_token($ts); + echo elgg_view('input/form', array('body' => $form_body, 'action' => $vars['url']."action/getemail?__elgg_ts=$ts&__elgg_token=$token")); + ?> + </div> + <div class="col right"> + <div class="zenbox cool"> + <h3>Email Address Usage</h3> + <p>Your email address is only used to send notifications from Planet Red.</p> + </div> + </div> \ No newline at end of file diff --git a/plugins/cas_auth_unl/views/default/account/forms/login.php b/plugins/cas_auth_unl/views/default/account/forms/login.php new file mode 100644 index 0000000000000000000000000000000000000000..ae194cca8efd6fd18f732d88d2615e073de40044 --- /dev/null +++ b/plugins/cas_auth_unl/views/default/account/forms/login.php @@ -0,0 +1,59 @@ +<?php + /** + * Elgg UNL CAS authentication login form + * + * @package cas_auth_unl + * @license http://www1.unl.edu/wdn/wiki/Software_License + * @author University of Nebraska-Lincoln + * @copyright 2010 + * @link http://www.unl.edu/ + */ + + if ($vars['config']->input['view'] == 'mobile') { + $viewmobile = '?view=mobile'; + $mobile = true; + } else { + $viewmobile = ''; + $mobile = false; + } + $ts = time(); + $token = generate_action_token($ts); +?> +<?php +if ($mobile) { + echo '<div id="actionBar">'; +} +?> + <div id="casOption"> + <a href="<?php echo $vars['url'] ?>action/login?usecas=yes&__elgg_ts=<?php echo $ts; ?>&__elgg_token=<?php echo $token; ?><?php echo str_replace('?', '&', $viewmobile);?>" id="casLogin">Login</a> + <div class="loginMessage"> + with your My.UNL Account<br /> + <span>for Faculty, Staff and Students</span> + </div> + </div> + <!-- + <div id="elggOption"> + <a href="<?php echo $vars['url'] .'pg/login'.$viewmobile?>" class="switchAction"></a> + <div class="optionMessage"> + Don't have a My.UNL Account? + <ul> + <li><a href="<?php echo $vars['url'] .'pg/login'.$viewmobile?>" class="switchAction">Login</a></li> + <li><a href="<?php echo $vars['url'] .'account/register.php'.$viewmobile?>">Register</a></li> + </ul> + </div> + <div class="elggLoginForm"> + <?php + $form_body = '<div class="element"><label>' . elgg_echo('username') .'</label>'. elgg_view('input/text', array('internalname' => 'username', 'class' => 'login-textarea')) . '</div>'; + $form_body .= '<div class="element"><label>' . elgg_echo('password') .'</label>'. elgg_view('input/password', array('internalname' => 'password', 'class' => 'login-textarea')) . '</div>'; + $form_body .= elgg_view('input/submit', array('value' => elgg_echo('login'))); + $form_body .= '<ul><li><a href="'. $vars['url'] .'account/register.php'.$viewmobile.'">' . elgg_echo('register') . '</a></li> <li><a href="'. $vars['url'] .'account/forgotten_password.php'.$viewmobile.'">' . elgg_echo('user:password:lost') . '</a></li></ul>'; + echo elgg_view('input/form', array('body' => $form_body, 'action' => "". $vars['url'] ."action/login")); + ?> + </div> + </div> + --> +<?php +if ($mobile) { + echo '</div>'; +} +?> \ No newline at end of file diff --git a/plugins/cas_auth_unl/views/default/settings/cas_auth_unl/edit.php b/plugins/cas_auth_unl/views/default/settings/cas_auth_unl/edit.php new file mode 100644 index 0000000000000000000000000000000000000000..acd41d8d22fe5b82e3e89c79b81da19857160774 --- /dev/null +++ b/plugins/cas_auth_unl/views/default/settings/cas_auth_unl/edit.php @@ -0,0 +1,25 @@ +<?php + /** + * Elgg UNL CAS authentication + * + * @package cas_auth_unl + * @license BSD http://www1.unl.edu/wdn/wiki/Software_License + * @author University of Nebraska-Lincoln + * @copyright 2010 Regents of the University of Nebraska + * @link http://www.unl.edu/ + */ +?> +<p> + <fieldset style="border: 1px solid; padding: 15px; margin: 0 10px 0 10px"> + <legend><?php echo elgg_echo('CAS');?></legend> + + <label for="params[casurl]"><?php echo elgg_echo('CAS URL');?></label><br/> + <input type="text" name="params[casurl]" value="<?php echo $vars['entity']->casurl; ?>" /><br/> + + <label for="params[casport]"><?php echo elgg_echo('CAS PORT');?></label><br/> + <input type="text" name="params[casport]" value="<?php echo $vars['entity']->casport; ?>" /><br/> + + <label for="params[casuri]"><?php echo elgg_echo('CAS URI');?></label><br/> + <input type="text" name="params[casuri]" value="<?php echo $vars['entity']->casuri; ?>" /><br/> + </fieldset> +</p> \ No newline at end of file