mirror of
https://github.com/Akif9748/akf-forum.git
synced 2024-11-22 20:10:40 +03:00
Added user delete
This commit is contained in:
parent
6b483c8d28
commit
259ba11f0f
8 changed files with 92 additions and 42 deletions
|
@ -24,6 +24,8 @@ A forum script written in Node.js.
|
|||
- [x] Logout
|
||||
- [x] Admin
|
||||
- [x] Message count
|
||||
- [x] Delete User
|
||||
- [ ] Singature & About me
|
||||
- [ ] Messages
|
||||
- [x] Send message
|
||||
- [x] Delete message
|
||||
|
|
|
@ -17,7 +17,7 @@ module.exports = class Thread {
|
|||
}
|
||||
|
||||
getId(id = this.id) {
|
||||
const thread = db.get("threads."+id);
|
||||
const thread = db.get("threads").find(t => t.id == id);
|
||||
if (!thread) return null;
|
||||
this.id = id;
|
||||
const { title, author, messages = [], time = new Date().getTime(), deleted = false } = thread;
|
||||
|
@ -27,7 +27,7 @@ module.exports = class Thread {
|
|||
this.time = time;
|
||||
this.deleted = deleted;
|
||||
|
||||
return this
|
||||
return this;
|
||||
}
|
||||
takeId(){
|
||||
|
||||
|
|
|
@ -3,26 +3,45 @@ const db = require("quick.db")
|
|||
module.exports = class User {
|
||||
|
||||
|
||||
constructor(name = "guest", avatar = "/images/guest.png", time = new Date().getTime(), admin= false) {
|
||||
constructor(name = "guest", avatar = "/images/guest.png", time = new Date().getTime(), admin = false, deleted = false) {
|
||||
|
||||
this.name = name;
|
||||
this.avatar = avatar;
|
||||
this.time = time;
|
||||
this.admin = admin;
|
||||
this.deleted = deleted;
|
||||
|
||||
}
|
||||
|
||||
getId(id = this.id) {
|
||||
const user = db.get("users." + id);
|
||||
const user = db.get("users").find(u => u.id == id);
|
||||
if (!user) return null;
|
||||
this.id = Number(id);
|
||||
const { name = "guest", avatar = "/images/guest.png", time = new Date().getTime(), admin = false } = user;
|
||||
const { name = "guest", avatar = "/images/guest.png", time = new Date().getTime(), admin = false, deleted = false } = user;
|
||||
this.name = name;
|
||||
this.avatar = avatar;
|
||||
this.time = time;
|
||||
this.admin = admin;
|
||||
return this
|
||||
this.deleted = deleted;
|
||||
return this ;
|
||||
|
||||
}
|
||||
takeId() {
|
||||
|
||||
getName(name1 = this.name) {
|
||||
|
||||
const user = db.get("users").find(u => u.name == name1);
|
||||
if (!user) return null;
|
||||
this.id = Number(user.id);
|
||||
const { name = "guest", avatar = "/images/guest.png", time = new Date().getTime(), admin = false, deleted = false } = user;
|
||||
this.name = name;
|
||||
this.avatar = avatar;
|
||||
this.time = time;
|
||||
this.admin = admin;
|
||||
this.deleted = deleted;
|
||||
return this ;
|
||||
|
||||
}
|
||||
takeId() {
|
||||
let id = db.get("users");
|
||||
this.id = id ? id.length : 0;
|
||||
return this
|
||||
|
@ -34,8 +53,6 @@ module.exports = class User {
|
|||
}
|
||||
getLink(id = this.id) {
|
||||
return "/users/" + id;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -10,9 +10,9 @@ module.exports = (req, res) => {
|
|||
|
||||
if (!id) {
|
||||
|
||||
const users = db.get("users").slice(0, 10);
|
||||
const users = db.get("users").slice(0);
|
||||
|
||||
const links = users.map(user => "/users/" + user.id)
|
||||
const links = users.filter(user=> !user.deleted).map(user => "/users/" + user.id)
|
||||
return res.render("users", { users, links, user })
|
||||
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ module.exports = (req, res) => {
|
|||
const member = new User().getId(id);
|
||||
|
||||
|
||||
if (member) {
|
||||
if (member && (user.admin || !member.deleted)) {
|
||||
const message = db.get("messages").filter(message => message.author.id === Number(id)).length
|
||||
const thread = db.get("threads").filter(thread => thread.author.id === Number(id)).length
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const db = require("quick.db");
|
||||
const error = require("../../errors/error.js")
|
||||
const { User, Message } = require("../../classes/index");
|
||||
|
||||
module.exports = (req, res) => {
|
||||
req.session.loggedin = false;
|
||||
|
@ -12,7 +13,7 @@ module.exports = (req, res) => {
|
|||
if (user) {
|
||||
// Authenticate the user
|
||||
if (user.key !== password) return error(res, 404, 'Incorrect Password!')
|
||||
|
||||
if (new User().getName(username).deleted) return error(res, 404, 'Incorrect Username and/or Password!')
|
||||
req.session.loggedin = true;
|
||||
req.session.username = username;
|
||||
req.session.userid = user.id;
|
||||
|
|
18
routes/post/userDelete.js
Normal file
18
routes/post/userDelete.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
const { User, Message } = require("../../classes/index");
|
||||
const error = require("../../errors/error.js");
|
||||
|
||||
module.exports = (req, res) => {
|
||||
if (!req.session.loggedin) return res.redirect('/login');
|
||||
const user = new User().getId(req.session.userid);
|
||||
if (!user.admin)
|
||||
return error(res, 403, "You have not got permission for this.");
|
||||
|
||||
const id = req.url.slice(9 + 3)
|
||||
const member = new User().getId(id);
|
||||
if (!member || member.deleted) return error(res, 404, "We have not got any user declared as this id.");
|
||||
|
||||
member.deleted = true;
|
||||
member.write();
|
||||
|
||||
res.redirect("/admin");
|
||||
}
|
|
@ -36,6 +36,7 @@
|
|||
<hr>
|
||||
<button class="buyuk" type="submit">Make admin!</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
if (<%= user2.admin %>)
|
||||
alert("Making admin of '<%= user2.name %>'' is success");
|
||||
|
|
|
@ -31,38 +31,49 @@
|
|||
<!-- Navbar end -->
|
||||
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<h1>Avatar:</h1>
|
||||
<img style="width:256px;height:256px;" src=<%=member.avatar %> alt=<%= member.name %>>
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
<h1>Avatar:</h1>
|
||||
<img style="width:256px;height:256px;" src=<%=member.avatar %> alt=<%= member.name %>>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<h2>Name: <%= member.name %>
|
||||
</h2>
|
||||
</li>
|
||||
<li>
|
||||
<h2>Created at:
|
||||
<%= new Date(member.time).toLocaleString() %>
|
||||
</h2>
|
||||
<li>
|
||||
<h2>Name: <%= member.name %>
|
||||
</h2>
|
||||
</li>
|
||||
<li>
|
||||
<h2>Created at:
|
||||
<%= new Date(member.time).toLocaleString() %>
|
||||
</h2>
|
||||
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<h2>Is admin? <%= member.admin ? "Yes" : "No" %>
|
||||
</h2>
|
||||
</li>
|
||||
</li>
|
||||
<li>
|
||||
<h2>Is admin? <%= member.admin ? "Yes" : "No" %>
|
||||
</h2>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<h2> Message: <%= counts.message %>
|
||||
</h2>
|
||||
</li>
|
||||
<li>
|
||||
<h2> Thread: <%= counts.thread %>
|
||||
</h2>
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
<h2> Message: <%= counts.message %>
|
||||
</h2>
|
||||
</li>
|
||||
<li>
|
||||
<h2> Thread: <%= counts.thread %>
|
||||
</h2>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<% if (user.admin) {%>
|
||||
<form action="/admin/" method="POST">
|
||||
<input name="userid" type="hidden" value="<%= member.id %>"></input>
|
||||
<button class="buyuk" type="submit">Make admin!</button>
|
||||
|
||||
</form>
|
||||
|
||||
<form action="/userDelete/<%= member.id %>" method="POST">
|
||||
<button class="buyuk" type="submit">Delete user!</button>
|
||||
</form>
|
||||
<% }; %>
|
||||
|
||||
</body>
|
||||
|
||||
|
|
Loading…
Reference in a new issue