first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var db = require("../db/index");
var Interceptor = (function () {
function Interceptor() {
}
Interceptor.prototype.adminPageInterceptor = function (req, res, next) {
console.log(req.session.user);
if (req.session.user == undefined) {
res.json({
status: 404,
message: '您还未登录, 请访问 /admin/login 登录'
});
}
else {
next();
}
};
Interceptor.prototype.adminInterceptor = function (req, res, next) {
return __awaiter(this, void 0, void 0, function () {
var data;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(req.headers.token != undefined)) return [3, 2];
return [4, db.query({
sql: 'SELECT * from user where token = ?',
par: [req.headers.token]
})];
case 1:
data = _a.sent();
if (data.length != 0) {
next();
}
else {
res.json({
status: 500,
message: 'token已经失效请重新登录'
});
}
return [3, 3];
case 2:
res.json({
status: 500,
message: '请勿非法访问接口缺少token'
});
_a.label = 3;
case 3: return [2];
}
});
});
};
return Interceptor;
}());
module.exports = new Interceptor();

View File

@@ -0,0 +1,46 @@
var createError = require('http-errors');
var express = require('express');
var session = require('express-session');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var AdminUsersRouter = require('./routes/admin/page/user');
var AdminHomeRouter = require('./routes/admin/page/home');
var AdminArticleRouter = require('./routes/admin/page/article');
var AdminApiUsersRouter = require('./routes/admin/api/userApi');
var AdminApiArticleRouter = require('./routes/admin/api/articleApi');
var app = express();
app.use(session({
secret: '!@#$%&*()cvb<??>',
resave: true,
saveUninitialized: true,
cookie: {
maxAge: 1000 * 60 * 3
}
}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/admin', AdminUsersRouter);
app.use('/admin', AdminHomeRouter);
app.use('/admin', AdminArticleRouter);
app.use('/admin/api', AdminApiUsersRouter);
app.use('/admin/api', AdminApiArticleRouter);
app.use(function (req, res, next) {
next(createError(404));
});
app.use(function (err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
res.status(err.status || 500);
res.render('error');
});
module.exports = app;

47
历届学生/17届课程/blog/dist/bin/www.js vendored Executable file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env node
var app = require('../app');
var debug = require('debug')('blog:server');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
return val;
}
if (port >= 0) {
return port;
}
return false;
}
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}

View File

@@ -0,0 +1,12 @@
module.exports = {
mysql: {
host: 'localhost',
user: 'root',
password: 'lb714500',
database: 'news'
},
sql: {
login: 'SELECT id,username,token from user where username = ? and userpassword = ?',
add: 'INSERT INTO `user` (username,userpassword) VALUES (?, ?)'
}
};

View File

@@ -0,0 +1,21 @@
var mysql = require('mysql');
var config = require('../config/index');
var DB = (function () {
function DB() {
this.connection = mysql.createConnection(config.mysql);
this.connection.connect();
}
DB.prototype.query = function (params) {
var _this = this;
return new Promise(function (reject, resove) {
_this.connection.query(params.sql, params.par, function (error, results, fields) {
console.log(results);
if (error)
throw error;
reject(results);
});
});
};
return DB;
}());
module.exports = new DB();

View File

@@ -0,0 +1,10 @@
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
body div {
margin: 100px;
}
a {
color: #00B7FF;
}

View File

View File

@@ -0,0 +1,32 @@
$(".submitAdd").click(function() {
var name = $(".name").val();
var pwd = $(".pwd").val();
var repwd = $(".repwd").val();
if((name.length !=0 && pwd.length !=0 && repwd.length !=0) && pwd == repwd) {
$.ajax({
url: 'http://127.0.0.1:3000/admin/api/add',
type: 'POST',
data: {
name: name,
pwd: repwd
},
success: function(res) {
if(res.status == 200) {
if(confirm("注册成功,点击确定登录")) {
location.href = "/admin/login"
}
} else {
alert(res.message)
}
},
error: function(err) {
}
})
} else {
alert("有信息未填写,或者两次密码不相同")
}
})

View File

@@ -0,0 +1,31 @@
var E = window.wangEditor
var editor = new E('#editor')
editor.create()
$(".pushArticel").click(function() {
var title = $(".title").val()
var introduction = $(".introduction").val()
var author = $(".author").val()
var content = editor.txt.html()
// 验证用户是否输入内容,有没填写的给提示
// 对push接口实现token验证的调用
// 登录成功本地保存 token发送ajax请求头携带token
//
$.ajax({
url: 'http://127.0.0.1:3000/admin/api/push',
type: 'POST',
data: {
title: title,
introduction: introduction,
author: author,
content: content
},
success: function(res) {
console.log(res);
},
error: function(err) {}
})
});

View File

@@ -0,0 +1,34 @@
$(".submitLogin").click(function() {
var userName = $("input[type='text']").val()
var userPassword = $("input[type='password']").val()
if(userName.length == 0 || userPassword.length ==0) {
alert("账户密码为空")
} else {
$.ajax({
url: 'http://127.0.0.1:3000/admin/api/login',
type: 'POST',
headers: {
token: '645e8c56a66e32792f224730fd238711'
},
data: {
name: userName,
pwd: userPassword
},
success: function(res) {
if (res.status == 200) {
location.href = "/admin/home"
} else {
alert(res.message)
}
},
error: function(err) {
}
})
}
});

View File

@@ -0,0 +1 @@
console.log("js")

View File

@@ -0,0 +1,8 @@
var express = require('express');
var router = express.Router();
var admin = require('../../../Interceptor/index');
router.post('/push', function (req, res, next) {
var title = req.body.title, introduction = req.body.introduction, author = req.body.author, content = req.body.content;
console.log(title, content);
});
module.exports = router;

View File

@@ -0,0 +1,113 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var express = require('express');
var router = express.Router();
var db = require("../../../db/index");
var utils = require("../../../utils/index");
var admin = require("../../../Interceptor/index");
var config = require("../../../config/index");
router.post('/login', function (req, res, next) {
return __awaiter(this, void 0, void 0, function () {
var username, pwd, data, token;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
username = req.body.name;
pwd = req.body.pwd;
return [4, db.query({
sql: config.sql.login,
par: [username, utils.password(pwd)]
})];
case 1:
data = _a.sent();
if (!(data.length != 0)) return [3, 3];
token = utils.md5token(JSON.stringify(data[0]));
req.session.user = data[0];
console.log("req.session.user ", req.session.user);
return [4, db.query({ sql: 'UPDATE user set token = ? WHERE id = ?', par: [token, data[0].id] })];
case 2:
_a.sent();
res.json({
status: 200,
message: '登录成功',
data: data[0]
});
return [3, 4];
case 3:
res.json({
status: 404,
message: '用户名或密码错误',
data: null
});
_a.label = 4;
case 4: return [2];
}
});
});
});
router.post('/add', function (req, res, next) {
return __awaiter(this, void 0, void 0, function () {
var name, pwd, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
name = req.body.name;
pwd = req.body.pwd;
return [4, db.query({ sql: config.sql.add, par: [name, utils.password(pwd)] })];
case 1:
result = _a.sent();
console.log(result);
if (result.hasOwnProperty("insertId")) {
res.json({
status: 200,
message: '注册成功',
data: null
});
}
else {
res.json({
status: 500,
message: '注册失败,重新尝试',
data: result
});
}
return [2];
}
});
});
});
module.exports = router;

View File

@@ -0,0 +1,13 @@
var express = require('express');
var router = express.Router();
var admin = require('../../../Interceptor/index');
router.get('/push', function (req, res, next) {
console.log("wewfwefwr");
res.render("admin/page/push", {
showHeader: true,
showLeftMenu: true,
showFooter: true,
user: req.session.user
});
});
module.exports = router;

View File

@@ -0,0 +1,16 @@
var express = require('express');
var router = express.Router();
var admin = require('../../../Interceptor/index');
router.get('/home', admin.adminPageInterceptor, function (req, res, next) {
res.render("admin/page/home", {
showHeader: true,
showLeftMenu: false,
showFooter: true,
user: req.session.user
});
});
router.get('/logout', function (req, res, next) {
req.session.user = null;
res.redirect("/admin/login");
});
module.exports = router;

View File

@@ -0,0 +1,6 @@
var express = require('express');
var router = express.Router();
var admin = require('../../../Interceptor/index');
router.get('/push', admin.adminPageInterceptor, function (req, res, next) {
});
module.exports = router;

View File

@@ -0,0 +1,19 @@
var express = require('express');
var router = express.Router();
router.get('/login', function (req, res, next) {
res.render('admin/page/login', {
title: '用户登录',
showHeader: false,
showLeftMenu: false,
showFooter: false
});
});
router.get('/add', function (req, res, next) {
res.render('admin/page/add', {
title: '用户注册',
showHeader: false,
showLeftMenu: false,
showFooter: false
});
});
module.exports = router;

View File

@@ -0,0 +1,14 @@
var express = require('express');
var router = express.Router();
router.get('/login', function (req, res, next) {
res.render('admin/page/login', {
title: '用户登录',
showHeader: false,
showLeftMenu: false,
showFooter: false
});
});
router.get('/add', function (req, res, next) {
res.send('respond with a resource');
});
module.exports = router;

View File

@@ -0,0 +1,13 @@
var express = require('express');
var router = express.Router();
var db = require('../db/index');
router.get('/', function (req, res, next) {
var id = req.query.id;
db.query({
sql: 'SELECT * from user where id = ?',
par: [id]
}, function (result) {
res.json(result);
});
});
module.exports = router;

View File

@@ -0,0 +1,6 @@
var express = require('express');
var router = express.Router();
router.get('/', function (req, res, next) {
res.send('respond with a resource');
});
module.exports = router;

View File

@@ -0,0 +1,13 @@
var md5 = require("md5");
var Utils = (function () {
function Utils() {
}
Utils.prototype.md5token = function (message) {
return md5(message + Date.now());
};
Utils.prototype.password = function (str) {
return md5(str);
};
return Utils;
}());
module.exports = new Utils();

View File

@@ -0,0 +1,19 @@
doctype html
html
head
title= title
script(src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js")
block assets
body
if showHeader
include tpl/header.pug
if showLeftMenu
include tpl/leftMenu.pug
block content
if showFooter
include tpl/footer.pug
block js

View File

@@ -0,0 +1,14 @@
extends ../layout
block assets
link(rel="stylesheet", href="")
block content
h2 用户注册
input(class="name" type="text" placeholder="请输入用户名")
input(class="pwd" type="password" placeholder="请输入密码")
input(class="repwd" type="password" placeholder="请输入确认密码")
input(class="submitAdd" type="button" value=" 注 册 ")
block js
script(src="/js/admin/add.js")

View File

@@ -0,0 +1,9 @@
extends ../layout
block assets
link(rel="stylesheet", href="")
block content
h2 欢迎管理员 #{user.username} 登录
block js

View File

@@ -0,0 +1,13 @@
extends ../layout
block assets
link(rel="stylesheet", href="")
block content
h2 登录
input(type="text" placeholder="请输入用户名")
input(type="password" placeholder="请输入密码")
input(class="submitLogin" type="button" value="登录")
block js
script(src="/js/admin/user.js")

View File

@@ -0,0 +1,21 @@
extends ../layout
block assets
link(rel="stylesheet", href="")
block content
.push
input(class="title" placeholder="文章标题")
br
input(class="introduction" placeholder="文章简介")
br
input(class="author" placeholder="文章作者")
br
#editor
p 请开始你的文章创作
br
button(class="pushArticel") 发布
block js
script(src="/js/admin/push.js")

View File

@@ -0,0 +1,3 @@
h2 底部版权
script(src="https://unpkg.com/wangeditor@3.1.1/release/wangEditor.min.js")

View File

@@ -0,0 +1,17 @@
div(style="float:right")
//- #{user.username}
a(href="/admin/logout") 退出登录
ul
li
a(href="/") 首页
li
a(href="/admin/all") 所有文章
li
a(href="/admin/push") 发布文章
li
a(href="/admin/UserCenter") 用户管理
li
a(href="/admin/comment") 评论管理
li
a(href="/admin/setting") 网站设置

View File

@@ -0,0 +1 @@
h2 左边菜单

View File

@@ -0,0 +1,6 @@
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}

View File

@@ -0,0 +1,5 @@
extends layout
block content
h1= title
p 测试你好wwww #{title}

View File

@@ -0,0 +1,7 @@
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content