add is admin middleware

This commit is contained in:
Adrian Thompson
2020-09-07 15:53:03 +02:00
parent e060ff3aaa
commit 052b5007c2
4 changed files with 17 additions and 6 deletions

View File

@@ -3,6 +3,7 @@ const path = require("path");
// Middleware
const mustBeAuthenticated = require(__dirname + "/../middleware/mustBeAuthenticated");
const setAdminHeaderIfAuthenticated = require(__dirname + "/../middleware/setAdminHeaderIfAuthenticated");
const update = require(path.join(__dirname + "/update"));
const retrieve = require(path.join(__dirname + "/retrieve"));
@@ -21,7 +22,7 @@ const router = express.Router();
router.get("/wineinfo/search", wineinfo.wineSearch);
router.get("/request/all", request.getAllRequestedWines);
router.get("/request/all", setAdminHeaderIfAuthenticated, request.getAllRequestedWines);
router.post("/request/new-wine", request.requestNewWine);
router.delete("/request/:id", request.deleteRequestedWineById);

View File

@@ -29,7 +29,11 @@ const overallWineStatistics = () => {
const allRequestedWines = () => {
const url = new URL("/api/request/all", BASE_URL);
return fetch(url.href).then(resp => resp.json());
return fetch(url.href)
.then(resp => {
const isAdmin = resp.headers.get("Vinlottis-Admin") || false;
return Promise.all([resp.json(), isAdmin]);
});
};
const chartWinsByColor = () => {

View File

@@ -5,7 +5,7 @@
</h1>
<section class="requested-wines-container">
<p v-if="wines == undefined || wines.length == 0">Ingen har foreslått noe enda!</p>
<RequestedWineCard v-for="requestedEl in wines" :key="requestedEl.id" :requestedElement="requestedEl" @wineDeleted="filterOutDeletedWine" />
<RequestedWineCard v-for="requestedEl in wines" :key="requestedEl.id" :requestedElement="requestedEl" @wineDeleted="filterOutDeletedWine" :showDeleteButton="isAdmin"/>
</section>
</main>
</template>
@@ -20,7 +20,8 @@ export default {
data(){
return{
wines: undefined,
canRequest: true
canRequest: true,
isAdmin: false
}
},
methods: {
@@ -28,7 +29,7 @@ export default {
this.wines = this.wines.filter(item => item.wine._id !== wine._id)
},
async refreshData(){
this.wines = await allRequestedWines() || []
[this.wines, this.isAdmin] = await allRequestedWines() || []
}
},
mounted() {

View File

@@ -19,7 +19,7 @@
class="wine-link"
>Les mer polet</a>
</section>
<button @click="deleteWine(wine)">
<button @click="deleteWine(wine)" v-if="showDeleteButton == true">
Slett vinen
</button>
</section>
@@ -40,6 +40,11 @@ export default {
requestedElement: {
required: true,
type: Object
},
showDeleteButton: {
required: false,
type: Boolean,
default: false
}
},
methods: {