diff options
author | Nils Schwabe | 2014-05-20 13:35:07 +0200 |
---|---|---|
committer | Nils Schwabe | 2014-05-20 13:35:07 +0200 |
commit | f3364894c1a29431fcb93e7dcd004d50e52e4b47 (patch) | |
tree | e3ee7f63bb578728def1f108ec739be9254ec063 /management-interface | |
parent | Add login functionallity (diff) | |
download | masterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.tar.gz masterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.tar.xz masterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.zip |
Improve login
Add satellite list
Add remove items for guests
Diffstat (limited to 'management-interface')
-rw-r--r-- | management-interface/api/models/Master.php | 39 | ||||
-rw-r--r-- | management-interface/config/global.cfg | 12 | ||||
-rw-r--r-- | management-interface/css/custom.css | 2 | ||||
-rw-r--r-- | management-interface/index.php | 2 | ||||
-rw-r--r-- | management-interface/template/footer.php | 6 | ||||
-rw-r--r-- | management-interface/views/home.htm | 6 | ||||
-rw-r--r-- | management-interface/views/login.htm | 36 | ||||
-rw-r--r-- | management-interface/views/menu.php | 11 | ||||
-rw-r--r-- | management-interface/views/satellites.htm | 44 | ||||
-rw-r--r-- | management-interface/views/users.htm | 38 |
10 files changed, 154 insertions, 42 deletions
diff --git a/management-interface/api/models/Master.php b/management-interface/api/models/Master.php index 4ee2943..0566b0a 100644 --- a/management-interface/api/models/Master.php +++ b/management-interface/api/models/Master.php @@ -32,6 +32,15 @@ class Master { echo $this->view->render('template/message.php'); } + // if we want to list the users: + if ($f3->get('_module') === 'users') { + $this->tabUsers($f3); + } else if($f3->get('_module') === 'home') { + $this->tabHome($f3); + } else if ($f3->get('_module') === 'satellites') { + $this->tabSatellite($f3); + } + echo Template::instance()->render('views/' . $f3->get('_module') . '.htm'); echo $this->view->render('template/footer.php'); @@ -41,23 +50,41 @@ class Master { public function dologin($f3, $username, $password) { if (isset($f3->get('user')[$username]) && $f3->get('user')[$username] == sha1($password)) { $_SESSION['username'] = $username; - $f3->set('loggedin', (isset($f3->get('SESSION')['username']))?true:false); - $f3->set('username', (isset($f3->get('SESSION')['username']))?$f3->get('SESSION')['username']:'Guest'); - $this->parse($f3, array('m' => 'home')); + $f3->set('loggedin', true); + $f3->set('username', $username); + $f3->reroute('@module(@m=home)'); } else { $f3->set('message', 'Login invalid.'); - $this->parse($f3, array('m' => 'login')); + $f3->reroute('@module(@m=home)'); } } public function dologout($f3) { $_SESSION = array(); $f3->set('message', 'Logout successful'); - $f3->set('loggedin', (isset($f3->get('SESSION')['username']))?true:false); - $f3->set('username', (isset($f3->get('SESSION')['username']))?$f3->get('SESSION')['username']:'Guest'); + $f3->set('loggedin', false); + $f3->set('username', 'Guest'); $this->parse($f3, array('m' => 'login')); } + private function tabUsers($f3) { + $f3->set('result',$f3->get('DB')->exec('SELECT userid, username, organization, firstname, lastname, email, lastlogin FROM user')); + } + + private function tabHome($f3) { + // one command is 'sh -c' and the other command is 'grep' + // so we need more than two commands to find the server + if (shell_exec('ps aux | grep "org.openslx.imagemaster.App" | wc -l') > 2) { + $f3->set('serverstatus', true); + } else { + $f3->set('serverstatus', false); + } + } + + private function tabSatellite($f3) { + $f3->set('result', $f3->get('DB')->exec('SELECT organization, address, name, prefix, publickey FROM satellite')); + } + } ?> diff --git a/management-interface/config/global.cfg b/management-interface/config/global.cfg index eede8c9..172c19e 100644 --- a/management-interface/config/global.cfg +++ b/management-interface/config/global.cfg @@ -2,8 +2,14 @@ ; the menu items (need to exist like views/[name].htm) item[0]="home" item[1]="users" -item[2]="about" -;item[3]="test" +item[2]="satellites" +item[3]="about" + +; specify which item is intern and needs a login +intern[0]=false +intern[1]=true +intern[2]=true +intern[3]=false ; title title="Masterserver Management" @@ -12,4 +18,4 @@ title="Masterserver Management" user["nils"]="f58cf5e7e10f195e21b553096d092c763ed18b0e" ;hostname -hostname="http://localhost/if/" +hostname="http://132.230.4.23/if/" diff --git a/management-interface/css/custom.css b/management-interface/css/custom.css index 56b22d2..bd16a7e 100644 --- a/management-interface/css/custom.css +++ b/management-interface/css/custom.css @@ -51,7 +51,7 @@ html { } /* fixing in danger boxes */ -.bg-danger { +p.bg-danger { padding: 15px; text-align: center; } diff --git a/management-interface/index.php b/management-interface/index.php index d7d0b62..afee942 100644 --- a/management-interface/index.php +++ b/management-interface/index.php @@ -14,13 +14,11 @@ $f3->set('message', ''); $f3->config('config/global.cfg');
-/*
$f3->set('DB', new DB\SQL(
'mysql:host=localhost;port=3306;dbname=masterserver',
'root',
'password'
));
-*/
$f3->route('POST /do/@action',
function($f3, $params) {
diff --git a/management-interface/template/footer.php b/management-interface/template/footer.php index be0cfea..68f8351 100644 --- a/management-interface/template/footer.php +++ b/management-interface/template/footer.php @@ -1,5 +1,11 @@ <?php //var_dump($_SESSION); ?> + <!-- Bootstrap core JavaScript + ================================================== --> + <!-- Placed at the end of the document so the pages load faster --> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> + <script src="js/bootstrap.min.js"></script> + <script src="js/custom.js"></script> </body> </html> diff --git a/management-interface/views/home.htm b/management-interface/views/home.htm index 229e427..f2cadd0 100644 --- a/management-interface/views/home.htm +++ b/management-interface/views/home.htm @@ -1,8 +1,10 @@ <div class="container"> <div class="jumbotron"> - <h1>{{ strtoupper(@_module) }}</h1> - <p>Hello {{ @username }}<p> + <p>Hello {{ @username }}!<p> + <check if="{{ @loggedin }}"> + <p>Status of server is: <check if="{{ @serverstatus }}"><true><span class="bg-success">online</span></true><false><span class="bg-danger">offline</span></false></check></p> + </check> </div> </div> <!-- /container --> diff --git a/management-interface/views/login.htm b/management-interface/views/login.htm index f447cb8..d283f45 100644 --- a/management-interface/views/login.htm +++ b/management-interface/views/login.htm @@ -1,22 +1,20 @@ -<check if="{{ @loggedin }}"> -<true> <div class="container"> <div class="jumbotron"> - <h1>Already logged in.</h1> - </div> + <check if="{{ @loggedin }}"> + <true> + <h1>Already logged in.</h1> + </true> + <false> + <form class="form-signin" action="{{ @hostname }}do/login" method="post"> + <h2 class="form-signin-heading">Login</h2> + <input type="text" name="user" class="form-control" placeholder="Username" autofocus> + <input type="password" name="pass" class="form-control" placeholder="Password"> + <label class="checkbox"> + <input type="checkbox" name="remember" value="remember-me">Remember me</input> + </label> + <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button> + </form> + </false> + </check> + </div> </div> -</true> -<false> -<div class="container"> - <form class="form-signin" action="{{ @hostname }}do/login" method="post"> - <h2 class="form-signin-heading">Login</h2> - <input type="text" name="user" class="form-control" placeholder="Username" autofocus> - <input type="password" name="pass" class="form-control" placeholder="Password"> - <label class="checkbox"> - <input type="checkbox" name="remember" value="remember-me">Remember me</input> - </label> - <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button> - </form> -</div> -</false> -</check> diff --git a/management-interface/views/menu.php b/management-interface/views/menu.php index 9ef4068..d010119 100644 --- a/management-interface/views/menu.php +++ b/management-interface/views/menu.php @@ -8,17 +8,18 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <a class="navbar-brand" href="#"><?= $_title ?></a> + <a class="navbar-brand" href="<?=$hostname ?>"><?= $_title ?></a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <?php - foreach($item as $value) { + for ($i = 0; $i < sizeof($item); $i++) { + if ($intern[$i]) continue; echo '<li'; - echo ($value === $_module)? ' class="active"':''; + echo ($item[$i] === $_module)? ' class="active"':''; echo '>'; - echo '<a href="'.$hostname.$value.'">'; - echo Util::firstcap($value); + echo '<a href="'.$hostname.$item[$i].'">'; + echo Util::firstcap($item[$i]); echo '</a>'; echo '</li>'; } diff --git a/management-interface/views/satellites.htm b/management-interface/views/satellites.htm new file mode 100644 index 0000000..24adba1 --- /dev/null +++ b/management-interface/views/satellites.htm @@ -0,0 +1,44 @@ + <div class="container"> + <div class="jumbotron"> + <check if="{{ @loggedin }}"> + <true> + <h2>List of all satellite public keys</h2> + <table class="table"> + <thead> + <tr> + <td> + <label> + <input type="checkbox"> + </label> + </td> + <td>Organization</td> + <td>Address</td> + <td>Name</td> + <td>Prefix</td> + <td>Public key</td> + </tr> + </thead> + <tbody> + <repeat group="{{ @result }}" value="{{ @item }}"> + <tr> + <td> + <label> + <input type="checkbox"> + </label> + </td> + <td>{{ @item.organization }}</td> + <td>{{ @item.address }}</td> + <td>{{ @item.name }}</td> + <td>{{ @item.prefix}}</td> + <td><check if="{{ @item.publickey}} == ''"><true>no</true><false>yes</false></check></td> + </tr> + </repeat> + </tbody> + </table> + </true> + <false> + <p class="bg-danger">Please <a href="{{ $hostname }}login">login</a></p> + </false> + </check> + </div> + </div> <!-- /container --> diff --git a/management-interface/views/users.htm b/management-interface/views/users.htm index ed15306..c461072 100644 --- a/management-interface/views/users.htm +++ b/management-interface/views/users.htm @@ -1,8 +1,38 @@ <div class="container"> - <div class="jumbotron"> - <h1>{{ strtoupper(@_module) }}</h1> - <p></p> + <check if="{{ @loggedin }}"> + <true> + <h2>List of all users</h2> + <table class="table"> + <thead> + <tr> + <td>ID</td> + <td>Username</td> + <td>Organization</td> + <td>First name</td> + <td>Last name</td> + <td>Email</td> + <td>Last login</td> + </tr> +</thead> + <tbody> + <repeat group="{{ @result }}" value="{{ @item }}"> + <tr> + <td>{{ @item.userid }}</td> + <td>{{ @item.username }}</td> + <td>{{ @item.organization }}</td> + <td>{{ @item.firstname }}</td> + <td>{{ @item.lastname }}</td> + <td>{{ @item.email }}</td> + <td>{{ @item.lastlogin }}</td> + </tr> + </repeat> + </tbody> + </table> + </true> + <false> + <p class="bg-danger">Please <a href="{{ $hostname }}login">login</a></p> + </false> + </check> </div> - </div> <!-- /container --> |