Better handling of the endpoints.

This commit is contained in:
NovaFox161
2018-01-22 13:23:35 -06:00
parent ccbf791e22
commit 3400a0c377
8 changed files with 183 additions and 145 deletions

View File

@@ -29,19 +29,23 @@ public class SparkUtils {
//Register the API Endpoints
before("/api/*", (request, response) -> {
/*
if (!request.requestMethod().equalsIgnoreCase("POST")) {
System.out.println("Denied '" + request.requestMethod() + "' access from: " + request.ip());
halt(405, "Method not allowed");
}
*/
//Check authorization
if (request.headers().contains("Authorization") && !request.headers("Authorization").equals("API_KEY")) {
//TODO: Actually check auth!!! < Just lazy right now
halt(401, "Unauthorized");
}
//Only accept json because its easier to parse and handle.
/*
if (!request.contentType().equalsIgnoreCase("application/json")) {
halt(400, "Bad Request");
}
*/
});
//API endpoints
@@ -70,6 +74,27 @@ public class SparkUtils {
post("/get", RsvpEndpoint::getRsvp);
post("/update", RsvpEndpoint::updateRsvp);
});
path("/dashboard", () -> {
path("/select", () -> {
post("/guild", DashboardHandler::handleGuildSelect);
post("/settings", DashboardHandler::handleSettingsSelect);
});
path("/create", () -> {
post("/calendar", DashboardHandler::handleCalendarCreate);
post("/announcement", DashboardHandler::handleAnnouncementCreate);
});
path("/update", () -> {
post("/announcement", DashboardHandler::handleAnnouncementUpdate);
post("/calendar", DashboardHandler::handleCalendarUpdate);
post("/settings", DashboardHandler::handleSettingsUpdate);
get("/settings", DashboardHandler::handleSettingsUpdateGet);
});
path("/delete", () -> {
post("/calendar", DashboardHandler::deleteCalendar);
post("/announcement", DashboardHandler::deleteAnnouncement);
});
});
});
@@ -77,23 +102,6 @@ public class SparkUtils {
path("/account", () -> {
get("/login", DiscordLoginHandler::handleDiscordCode);
get("/logout", DiscordLoginHandler::handleLogout);
path("/dashboard", () -> {
get("/select", DashboardHandler::handleGuildSelect);
get("/guild", DashboardHandler::handleSettingsSelect);
post("/update", DashboardHandler::handleSettingsUpdate);
post("/update/calendar", DashboardHandler::handleCalendarUpdate);
get("/update/get", DashboardHandler::handleSettingsUpdateGet); //Handle get requests for specific params...
post("/update/announcement", DashboardHandler::handleAnnouncementUpdate);
path("/create", () -> {
post("/calendar", DashboardHandler::handleCalendarCreate);
post("/announcement", DashboardHandler::handleAnnouncementCreate);
});
path("/delete", () -> {
get("/calendar", DashboardHandler::deleteCalendar);
get("/announcement", DashboardHandler::deleteAnnouncement);
});
});
});
//Templates and pages...

View File

@@ -47,34 +47,39 @@
<div id="content">
<!--Check if logged in, if not, handle login...-->
<div th:if="${loggedIn}">
<div id="side-nav">
<h4>Main Settings</h4>
<a href="/account/dashboard/guild?settings=bot">
<button>Bot Settings</button>
</a>
<br>
<a href="/account/dashboard/guild?settings=guild">
<button>Guild Settings</button>
</a>
<hr>
<h4>Components</h4>
<a href="/account/dashboard/guild?settings=calendar">
<button>Calendar</button>
</a>
<br>
<a href="/account/dashboard/guild?settings=events">
<button>Events</button>
</a>
<br>
<a href="/account/dashboard/guild?settings=announcements">
<button>Announcements</button>
</a>
<br>
<a href="/account/dashboard/guild?settings=rsvp">
<button>RSVPs</button>
</a>
</div>
<div id="side-nav">
<h4>Main Settings</h4>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="bot">
<button type="submit">Bot Settings</button>
</form>
<br>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="guild">
<button type="submit">Guild Settings</button>
</form>
<hr>
<h4>Components</h4>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="calendar">
<button type="submit">Calendar</button>
</form>
<br>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="events">
<button type="submit">Events</button>
</form>
<br>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="announcements">
<button type="submit">Announcements</button>
</form>
<br>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="rsvp">
<button type="submit">RSVPs</button>
</form>
</div>
<div style="display: flow-root">
<img th:src="${selected.icon}"
style="display: flex;float: left;max-width: 64px;margin-right: 15px;">
@@ -86,7 +91,7 @@
<div th:if="${settings} == announcements">
<h6>Announcement Settings</h6>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label> Use Simple Announcements
<br>
<input type="checkbox" name="simple-ann"
@@ -106,9 +111,10 @@
<button type="button" data-toggle="modal"
th:data-target="'#modal-' + ${ann.announcementId}">Edit
</button>
<a th:href="'/account/dashboard/delete/announcement?id=' + ${ann.announcementId}">
<button class="danger">Delete</button>
</a>
<form method="post" action="/api/v1/dashboard/delete/announcement">
<input type="hidden" name="id" th:value="${ann.announcemntId}">
<button class="danger" type="submit">Delete</button>
</form>
<!-- Edit Modal -->
<div class="modal fade" th:id="'modal-' + ${ann.announcementId}" role="dialog">
@@ -122,7 +128,7 @@
<div class="modal-body">
<form style="text-align: left;" method="post"
enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update/announcement">
action="/api/v1/dashboard/update/announcement">
<label>Channel
<br>
<select name="channel">
@@ -209,7 +215,7 @@
<div id="create-announcement">
<form style="text-align: left;" method="post"
enctype="application/x-www-form-urlencoded"
action="/account/dashboard/create/announcement" name="announcement-create">
action="/api/v1/dashboard/create/announcement" name="announcement-create">
<label>Channel
<br>
<select name="channel">

View File

@@ -43,30 +43,36 @@
<div th:if="${loggedIn}">
<div id="side-nav">
<h4>Main Settings</h4>
<a href="/account/dashboard/guild?settings=bot">
<button>Bot Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="bot">
<button type="submit">Bot Settings</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=guild">
<button>Guild Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="guild">
<button type="submit">Guild Settings</button>
</form>
<hr>
<h4>Components</h4>
<a href="/account/dashboard/guild?settings=calendar">
<button>Calendar</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="calendar">
<button type="submit">Calendar</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=events">
<button>Events</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="events">
<button type="submit">Events</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=announcements">
<button>Announcements</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="announcements">
<button type="submit">Announcements</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=rsvp">
<button>RSVPs</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="rsvp">
<button type="submit">RSVPs</button>
</form>
</div>
<div style="display: flow-root">
<img th:src="${selected.icon}"
@@ -102,7 +108,7 @@
<hr>
<h6>Create A Calendar Below!</h6>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/create/calendar" name="calendar-create">
action="/api/v1/dashboard/create/calendar" name="calendar-create">
<label>Calendar Name/Summary
<br>
<input type="text" name="cal-name" value="Calendar Name">
@@ -138,7 +144,7 @@
</a>
<br><br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update/calendar" style="text-align: left">
action="/api/v1/dashboard/update/calendar" style="text-align: left">
<label>Calendar Name/Summary
<br>
<input type="text" name="cal-name" th:value="${selected.calendar.name}">
@@ -149,7 +155,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update/calendar" style="text-align: left">
action="/api/v1/dashboard/update/calendar" style="text-align: left">
<label>Calendar Description
<br>
<input type="text" name="cal-desc" th:value="${selected.calendar.description}">
@@ -160,7 +166,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update/calendar" style="text-align: left">
action="/api/v1/dashboard/update/calendar" style="text-align: left">
<label>Calendar Timezone
<br>
<select name="cal-tz">
@@ -175,10 +181,12 @@
</form>
<br>
<br>
<a th:if="${selected.manageServer} == true"
th:href="'/account/dashboard/delete/calendar?calendar-id=' + ${selected.calendar.id}">
<button class="danger">Delete Calendar</button>
</a>
<form th:if="${selected.manageServer} == true" method="post"
action="/api/v1/dashboard/delete/calendar">
<input type="hidden" name="calendar-id" th:value="${selected.calendar.id}">
<button class="danger" type="submit">Delete Calendar</button>
</form>
</div>
</div>
</div>

View File

@@ -43,30 +43,36 @@
<div th:if="${loggedIn}">
<div id="side-nav">
<h4>Main Settings</h4>
<a href="/account/dashboard/guild?settings=bot">
<button>Bot Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="bot">
<button type="submit">Bot Settings</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=guild">
<button>Guild Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="guild">
<button type="submit">Guild Settings</button>
</form>
<hr>
<h4>Components</h4>
<a href="/account/dashboard/guild?settings=calendar">
<button>Calendar</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="calendar">
<button type="submit">Calendar</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=events">
<button>Events</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="events">
<button type="submit">Events</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=announcements">
<button>Announcements</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="announcements">
<button type="submit">Announcements</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=rsvp">
<button>RSVPs</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="rsvp">
<button type="submit">RSVPs</button>
</form>
</div>
<div style="display: flow-root">
<img th:src="${selected.icon}"

View File

@@ -43,30 +43,36 @@
<div th:if="${loggedIn}">
<div id="side-nav">
<h4>Main Settings</h4>
<a href="/account/dashboard/guild?settings=bot">
<button>Bot Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="bot">
<button type="submit">Bot Settings</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=guild">
<button>Guild Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="guild">
<button type="submit">Guild Settings</button>
</form>
<hr>
<h4>Components</h4>
<a href="/account/dashboard/guild?settings=calendar">
<button>Calendar</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="calendar">
<button type="submit">Calendar</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=events">
<button>Events</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="events">
<button type="submit">Events</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=announcements">
<button>Announcements</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="announcements">
<button type="submit">Announcements</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=rsvp">
<button>RSVPs</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="rsvp">
<button type="submit">RSVPs</button>
</form>
</div>
<div style="display: flow-root">
<img th:src="${selected.icon}"

View File

@@ -46,8 +46,10 @@
<th:block th:each="guild : ${guilds}">
<!--TODO: Remove patron/dev only on full release-->
<th:block th:if="${guild.settings.patronGuild} == true or ${guild.settings.devGuild} == true">
<button onclick="goToGuild(this.id)" class="guild" th:id="${guild.id}"
th:text="${guild.name}"></button>
<form method="post" action="/api/v1/dashboard/select/guild">
<input type="hidden" name="guild" th:value="${guild.id}">
<button type="submit" class="guild" th:text="${guild.name}"></button>
</form>
<br>
</th:block>
</th:block>

View File

@@ -42,30 +42,36 @@
<div th:if="${loggedIn}">
<div id="side-nav">
<h4>Main Settings</h4>
<a href="/account/dashboard/guild?settings=bot">
<button>Bot Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="bot">
<button type="submit">Bot Settings</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=guild">
<button>Guild Settings</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="guild">
<button type="submit">Guild Settings</button>
</form>
<hr>
<h4>Components</h4>
<a href="/account/dashboard/guild?settings=calendar">
<button>Calendar</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="calendar">
<button type="submit">Calendar</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=events">
<button>Events</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="events">
<button type="submit">Events</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=announcements">
<button>Announcements</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="announcements">
<button type="submit">Announcements</button>
</form>
<br>
<a href="/account/dashboard/guild?settings=rsvp">
<button>RSVPs</button>
</a>
<form method="post" action="/api/v1/dashboard/select/settings">
<input type="hidden" name="settings" value="rsvp">
<button type="submit">RSVPs</button>
</form>
</div>
<div style="display: flow-root">
<img th:src="${selected.icon}"
@@ -77,7 +83,7 @@
<!--Bot Settings-->
<div th:if="${settings} == bot">
<h6>Bot Settings</h6>
<form action="/account/dashboard/update" method="post"
<form action="/api/v1/dashboard/update/settings" method="post"
enctype="application/x-www-form-urlencoded" style="text-align: left">
<label>Bot Nickname
<br>
@@ -89,7 +95,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label>Bot Prefix
<br>
<input type="text" name="prefix" maxlength="32"
@@ -101,7 +107,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label>Bot Language
<br>
<select name="lang" disabled>
@@ -130,7 +136,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label>Enable Server Branding (Patron Only)
<br>
<input type="checkbox" name="branding"
@@ -142,7 +148,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label>Control Role
<br>
<select name="con-role">
@@ -158,7 +164,7 @@
<br>
<br>
<form method="post" enctype="application/x-www-form-urlencoded"
action="/account/dashboard/update" style="text-align: left">
action="/api/v1/dashboard/update/settings" style="text-align: left">
<label>DisCal Channel
<br>
<select name="discal-channel">

View File

@@ -1,11 +1,7 @@
function goToGuild(guildId) {
window.location.href = "/account/dashboard/select?guild=" + guildId;
}
function useSimpleAnnouncements(useSimple) {
window.location.href = "/account/dashboard/update/get?simple-ann=" + useSimple;
window.location.href = "/api/v1/dashboard/update/settings?simple-ann=" + useSimple;
}
function enableBranding(useBranding) {
window.location.href = "/account/dashboard/update/get?branding=" + useBranding;
window.location.href = "/api/v1/dashboard/update/settings?branding=" + useBranding;
}