added admin page

This commit is contained in:
printempw 2016-02-04 17:21:05 +08:00
parent 36c7a96a82
commit a2758c013a
3 changed files with 178 additions and 0 deletions

67
admin/admin_ajax.php Normal file
View File

@ -0,0 +1,67 @@
<?php
/**
* @Author: prpr
* @Date: 2016-02-04 13:53:55
* @Last Modified by: prpr
* @Last Modified time: 2016-02-04 17:14:06
*/
session_start();
$dir = dirname(dirname(__FILE__));
require "$dir/includes/autoload.inc.php";
require "$dir/config.php";
if(isset($_COOKIE['uname']) && isset($_COOKIE['token'])) {
$_SESSION['uname'] = $_COOKIE['uname'];
$_SESSION['token'] = $_COOKIE['token'];
}
/**
* Check token, won't allow non-admin user to access
*/
if (isset($_SESSION['uname'])) {
$admin = new user($_SESSION['uname']);
if ($_SESSION['token'] != $admin->getToken()) {
header('Location: ../index.php?msg=Invalid token. Please login.');
} else if (!$admin->is_admin) {
header('Location: ../index.php?msg=Looks like that you are not administrator :(');
}
} else {
header('Location: ../index.php?msg=Illegal access. Please login.');
}
/*
* No protection here,
* I don't think you wanna fuck yourself :(
*/
if (isset($_GET['action'])) {
$action = $_GET['action'];
$user = new user($_GET['uname']);
if ($action == "upload") {
$type = isset($_GET['type']) ? $_GET['type'] : "skin";
$file = isset($_FILES['file']) ? $_FILES['file'] : null;
if (!is_null($file)) {
if ($user->setTexture($type, $file)) {
$json['errno'] = 0;
$json['msg'] = "Skin uploaded successfully.";
} else {
$json['errno'] = 1;
$json['msg'] = "Uncaught error.";
}
} else {
utils::raise(1, 'No input file selected');
}
} else if ($action == "change") {
if (user::checkValidPwd($_POST['passwd'])) {
$user->changePasswd($_POST['passwd']);
$json['errno'] = 0;
$json['msg'] = "Password of ".$_GET['uname']." changed successfully.";
} // Will raise exception if password invalid
} else if ($action == "delete") {
$user->unRegister();
$json['errno'] = 0;
$json['msg'] = "Account successfully deleted.";
}
}
echo json_encode($json);

View File

@ -0,0 +1,26 @@
/*
* @Author: prpr
* @Date: 2016-02-04 16:47:54
* @Last Modified by: prpr
* @Last Modified time: 2016-02-04 16:48:04
*/
.pure-table {
margin: 80px auto 0;
width: 100%;
background-color: #fff;
}
.pure-button {
width: inherit;
margin: 0 10px 0 0 !important;
}
.pure-button-error {
background: rgb(202, 60, 60);
color: #fff;
}
input {
width: 100%;
margin: 10px 0 20px;
}
.fw {
width: 100%;
}

85
assets/js/admin.utils.js Normal file
View File

@ -0,0 +1,85 @@
/*
* @Author: prpr
* @Date: 2016-02-04 16:48:42
* @Last Modified by: prpr
* @Last Modified time: 2016-02-04 17:09:20
*/
'use strict';
function showUpload(uname, type) {
var ply = new Ply({
el: '<h2>Upload new '+type+':</h2><input type="file" id="file" accept="image/png"><button id="upload" class="pure-button pure-button-primary fw">Upload</button>',
effect: "fade",
onaction: function(){ upload(uname, type, $('#file').get(0).files[0]); },
});
ply.open();
}
function upload(uname, type, file){
var form_data = new FormData();
if (file) {
form_data.append('file', file);
$.ajax({
type: 'POST',
contentType: false,
url: 'admin_ajax.php?action=upload&type='+type+'&uname='+uname,
dataType: "json",
data: form_data,
processData: false,
success: function(json) {
if (json.errno == 0) {
showAlert("Successfully uploaded.");
$('#'+uname+'_'+type).attr('src', 'http://skin.fuck.io/'+type+'/'+uname+'.png?t='+Math.random());
} else {
showAlert("Error when uploading cape:\n" + json.msg);
}
}
});
}
}
function showAlert(msg) {
Ply.dialog("alert", msg);
}
function showChange(uname) {
Ply.dialog("prompt", {
title: "Type in "+uname+"'s new password",
form: { passwd: "New Password" }
}).done(function(ui){
var passwd = ui.data.passwd;
$.ajax({
type: "POST",
url: "admin_ajax.php?action=change&uname="+uname,
dataType: "json",
data: { "passwd": passwd },
success: function(json) {
if (json.errno == 0) {
showAlert(json.msg);
} else {
showAlert(json.msg);
}
}
});
});
}
function showDelete(uname) {
Ply.dialog("prompt", {
title: "Are you sure to delete "+uname+"?",
}).done(function(ui){
$.ajax({
type: "POST",
url: "admin_ajax.php?action=delete&uname="+uname,
dataType: "json",
success: function(json) {
if (json.errno == 0) {
showAlert(json.msg);
} else {
showAlert(json.msg);
}
}
});
});
}