blob: 23096f16ce5c559aeb4bbdd28389c8b05e08135f [file] [log] [blame]
<?php
class AdminController extends BaseController {
public function __construct()
{
Session::put("nav-active", "user-console");
}
public function dashboard(){
return View::make("account/dashboard");
}
public function addAdminSubmit(){
$this->beforeFilter('verifyadmin');
WSIS::update_user_roles( Input::get("username"), array( "new"=>array("admin"), "deleted"=>array() ) );
return View::make("account/admin-dashboard")->with("message", "User has been added to Admin.");
}
public function usersView(){
$this->beforeFilter('verifyadmin');
if( Input::has("role"))
{
$users = WSIS::getUserlistOfRole(Input::get("role"));
if( isset( $users->return))
$users = $users->return;
else
$users = array();
}
else
$users = WSIS::listUsers();
$roles = WSIS::getAllRoles();
Session::put("admin-nav", "manage-users");
return View::make("admin/manage-users", array("users" => $users, "roles" => $roles));
}
public function searchUsersView(){
$this->beforeFilter('verifyadmin');
if(Input::has("search_val"))
{
$users = WSIS::searchUsers(Input::get("search_val"));
}
else
$users = WSIS::listUsers();
$roles = WSIS::getAllRoles();
Session::put("admin-nav", "manage-users");
return View::make("admin/manage-users", array("users" => $users, "roles" => $roles));
}
public function gatewayView(){
$this->beforeFilter('verifyadmin');
//only for super admin
//Session::put("super-admin", true);
$crData = CRUtilities::getEditCRData();
$gateways = CRUtilities::getAllGatewayProfilesData();
$tokens = AdminUtilities::get_all_ssh_tokens();
$srData = SRUtilities::getEditSRData();
//$dsData = CRUtilities::getAllDataStoragePreferences( $gateways);
$gatewayData = array(
"gateways" => $gateways,
"computeResources" => CRUtilities::getAllCRObjects(),
"crData" => $crData,
"storageResources" => SRUtilities::getAllSRObjects(),
"srData" => $srData,
"tokens" => $tokens
);
$view = "admin/manage-gateway";
Session::put("admin-nav", "gateway-prefs");
return View::make( $view, $gatewayData);
}
public function addGatewayAdminSubmit(){
$this->beforeFilter('verifyadmin');
//check if username exists
if(WSIS::usernameExists( Input::get("username")) )
{
WSIS::updateUserRoles(Input::get("username"), array( "new"=>array( Config::get('wsis::admin-role-name')), "deleted"=>array() ) );
return Redirect::to("admin/dashboard/users?role=" . Config::get('wsis::admin-role-name'))->with("Gateway Admin has been added.");
}
else
{
echo ("username doesn't exist only."); exit;
}
}
public function rolesView(){
$this->beforeFilter('verifyadmin');
$roles = WSIS::getAllRoles();
Session::put("admin-nav", "manage-roles");
return View::make("admin/manage-roles", array("roles" => $roles));
}
public function experimentsView(){
$this->beforeFilter('verifyadmin');
Session::put("admin-nav", "exp-statistics");
return View::make("admin/manage-experiments" );
}
public function resourcesView(){
$this->beforeFilter('verifyadmin');
$data = CRUtilities::getBrowseCRData(false);
$allCRs = $data["crObjects"];
return View::make("admin/manage-resources", array("resources" => $allCRs) );
}
public function addRole(){
$this->beforeFilter('verifyadmin');
WSIS::addRole( Input::get("role") );
return Redirect::to("admin/dashboard/roles")->with( "message", "Role has been added.");
}
public function addRolesToUser(){
$this->beforeFilter('verifyadmin');
$currentRoles = (array)WSIS::getUserRoles(Input::get("username"));
$roles["new"] = array_diff(Input::all()["roles"], $currentRoles);
$roles["deleted"] = array_diff($currentRoles, Input::all()["roles"]);
$index = array_search('Internal/everyone',$roles["new"]);
if($index !== FALSE){
unset($roles["new"][$index]);
}
$index = array_search('Internal/everyone',$roles["deleted"]);
if($index !== FALSE){
unset($roles["deleted"][$index]);
}
$username = Input::all()["username"];
WSIS::updateUserRoles($username, $roles);
return Redirect::to("admin/dashboard/roles")->with( "message", "Roles has been added.");
}
public function removeRoleFromUser(){
$this->beforeFilter('verifyadmin');
$roles["deleted"] = array(Input::all()["roleName"]);
$roles["new"] = array();
$username = Input::all()["username"];
WSIS::updateUserRoles($username, $roles);
return Redirect::to("admin/dashboard/roles")->with( "message", "Role has been deleted.");
}
public function getRoles(){
$this->beforeFilter('verifyadmin');
return json_encode((array)WSIS::getUserRoles(Input::get("username")));
}
public function deleteRole(){
$this->beforeFilter('verifyadmin');
WSIS::deleteRole( Input::get("role") );
return Redirect::to("admin/dashboard/roles")->with( "message", "Role has been deleted.");
}
public function credentialStoreView(){
$this->beforeFilter('verifyadmin');
Session::put("admin-nav", "credential-store");
$tokens = AdminUtilities::get_all_ssh_tokens();
//var_dump( $tokens); exit;
return View::make("admin/manage-credentials", array("tokens" => $tokens ) );
}
public function updateUserRoles(){
$this->beforeFilter('verifyadmin');
if( Input::has("add"))
return WSIS::updateUserRoles(Input::get("username"), array("new"=> Input::get("roles"), "deleted" => array() ) );
else
return WSIS::updateUserRoles(Input::get("username"), array("new"=> array(), "deleted" => Input::get("roles") ) );
}
/* ---- Super Admin Functions ------- */
public function addGateway(){
$this->beforeFilter('verifyadmin');
$inputs = Input::all();
$gateway = AdminUtilities::add_gateway(Input::all());
$tm = WSIS::createTenant(1, $inputs["admin-username"] . "@" . $inputs["domain"], $inputs["admin-password"],
$inputs["admin-email"], $inputs["admin-firstname"], $inputs["admin-lastname"], $inputs["domain"]);
Session::put("message", "Gateway " . $inputs["gatewayName"] . " has been added.");
return Response::json( $tm);
//return Redirect::to("admin/dashboard/gateway")->with("message", "Gateway has been successfully added.");
}
public function experimentStatistics()
{
$this->beforeFilter('verifyadmin');
if (Request::ajax()) {
$inputs = Input::all();
$expStatistics = AdminUtilities::get_experiment_execution_statistics(strtotime($inputs['fromTime']) * 1000
, strtotime($inputs['toTime']) * 1000);
return View::make("admin/experiment-statistics", array("expStatistics" => $expStatistics));
}
}
public function getExperimentsOfTimeRange()
{
$this->beforeFilter('verifyadmin');
if (Request::ajax()) {
$inputs = Input::all();
$expContainer = AdminUtilities::get_experiments_of_time_range($inputs);
$expStates = ExperimentUtilities::getExpStates();
return View::make("partials/experiment-container",
array( "expContainer" => $expContainer,
"expStates" => $expStates,
"dashboard" => true
));
}
}
public function enableComputeResource(){
$this->beforeFilter('verifyadmin');
$resourceId = Input::get("resourceId");
$computeResource = CRUtilities::get_compute_resource($resourceId);
$computeResource->enabled = true;
CRUtilities::register_or_update_compute_resource($computeResource, true);
}
public function disableComputeResource(){
$this->beforeFilter('verifyadmin');
$resourceId = Input::get("resourceId");
$computeResource = CRUtilities::get_compute_resource($resourceId);
$computeResource->enabled = false;
CRUtilities::register_or_update_compute_resource($computeResource, true);
}
public function createSSH(){
$this->beforeFilter('verifyadmin');
$newToken = AdminUtilities::create_ssh_token();
$pubkey = AdminUtilities::get_pubkey_from_token( $newToken);
return Response::json( array( "token" => $newToken, "pubkey" => $pubkey));
}
public function removeSSH(){
$this->beforeFilter('verifyadmin');
$removeToken = Input::get("token");
if( AdminUtilities::remove_ssh_token( $removeToken) )
return 1;
else
return 0;
}
}