/ASPiderBlogEngine

A headless blog engine written in ASP.NET Core (Dusza Web 2022)

Primary LanguageC#

ASPider BlogEngine

English

A simple headless blog engine written in ASP.NET Core 7.0 based on the winning entry of the Dusza Árpád National Programming Contest 2022 (Web Category). The original project was made in a team of 3 with @minigyima and @Smart123s, and was written in Laravel with a React frontend, but is closed source.

This version of it contains all of the original features with a considerable amount of internal changes and improvements (especially to the api design).

If something feels a little off about the project, it's either because it had to follow the competition exercise or because it's my first ever C# project so don't be too hard on me.

Api Routes

Method Endpoint Requires Auth (+Roles) Requires Password Change Description
Post /Auth/Login No - Log in with username and password
Post /Auth/Refresh No - Log in with refresh token cookie
Get /Auth/User Yes No Get the currently logged in user
Get /Auth/Roles Yes No Get the roles of the currently logged in user
Post /Auth/ChangePassword Yes No (Only without) Change the password on the first login
Get /Config No - Get the config for the website (Title, Description, About page...)
Patch /Config Yes (Webmaster) Yes Set the website config (files are appended)
Get /Approve Yes (Webmaster, Moderator) Yes Index of unapproved posts
Get /Approve/{id} Yes (Webmaster, Moderator) Yes Preview post for approval change
Patch /Approve/{id} Yes (Webmaster, Moderator) Yes Change approval status of a post
Get /Files/{name} No - Download the given file
Delete /Files/{id} Yes Yes Delete the given file (will result in forbidden if editor tries to delete file on page or post that's not their own, same for config and non webmasters)
Post /Images Yes Yes Upload an image and get back the url for it
Get /Pages Yes (Webmaster, Moderator) Yes Index of all pages
Post /Pages Yes (Webmaster, Moderator) Yes Create a new page (maximum nesting depth is 4)
Get /Pages/{id} No - Get the given page with subpages, files and post previews (only visible pages)
Patch /Pages/{id} Yes (Webmaster, Moderator) Yes Edit the given page (files are appended)
Delete /Pages/{id} Yes (Webmaster, Moderator) Yes Delete the given page (also deletes files)
Get /Posts Yes Yes Index of all (or in case of an editor just the own) posts
Post /Posts Yes Yes Create a new post (unapproved for editors by default)
Get /Posts/{id} No - View the given post (only visible and approved)
Patch /Posts/{id} Yes Yes Edit the given post (will unapprove on content change for editors)
Delete /Posts/{id} Yes Yes Delete the given post (will result in forbidden or not found if it's not own for editors)
Get /Users Yes (Webmaster) Yes Index of all users
Post /Users Yes (Webmaster) Yes Create a new user
Get /Users/{id} No - View the given user and their visible and approved posts
Delete /Users/{id} Yes (Webmaster) Yes Delete the given user
Patch /Users/{id} Yes (Webmaster) Yes Edit the given user
Patch /Users/Self Yes Yes Edit the currently logged in user

More info about the api is available in the generated swagger documentation.

Magyar

Egy egyszerű front-end nélküli blog motor, ASP.NET Core 7.0-ban írva, amely a Dusza Árpád Országos Programozói Emlékverseny 2022 (Web Kategória) nyertes megoldásán alapul. Az eredeti projekt egy 3 fős csapatban készült @minigyima - val és @Smart123s - el, és Laravel - ben íródott React front-enddel, de nem nyílt forráskódú.

Ez a változat tartalmazza az eredeti funkciókat, jelentős belső változtatásokkal és fejlesztésekkel (főleg az api struktúrájában).

Ha valami kicsit furcsának tűnik, akkor az vagy azért van, mert a verseny utasítását kellett követnie, vagy mert ez az első C# projektem, szóval légyszíves nem megkövezni.

Api útvonalak

Method Endpoint Szükséges Auth (+Szerepkörök) Szükséges Jelszó Változtatás Leírás
Post /Auth/Login Nem - Belépés felhasználónévvel és jelszóval
Post /Auth/Refresh Nem - Belépés refresh token sütivel
Get /Auth/User Igen Nem Jelenleg belépett felhasználó lekérése
Get /Auth/Roles Igen Nem Jelenleg belépett felhasználó szerepköreinek lekérése
Post /Auth/ChangePassword Igen Nem (Csak anélkül) Jelszó megváltoztatása első belépéskor
Get /Config Nem - Weboldal konfigurációjának lekérése (Cím, Ismertető, Rólunk oldal...)
Patch /Config Igen (Webmaster) Igen Weboldal konfigurációjának beállítása (a fájlok hozzácsatolódnak)
Get /Approve Igen (Webmaster, Moderator) Igen Nem elfogadott cikkek lekérése
Get /Approve/{id} Igen (Webmaster, Moderator) Igen Cikk előnézete elfogadottság megváltoztatásáhot
Patch /Approve/{id} Igen (Webmaster, Moderator) Igen Cikk elfogadottságának megváltoztatása
Get /Files/{name} Nem - Az adott fájl letöltése
Delete /Files/{id} Igen Igen Az adott fájl törlése (hibát dob ha egy editor megpróbál fájlt törölni olyan oldalon vagy poszton, amely nem az övé, ugyan ez a helyzet a konfigurációval és a webmaster - ekkel)
Post /Images Igen Igen Kép feltöltése és url szerzése hozzá
Get /Pages Igen (Webmaster, Moderator) Igen Az összes oldal lekérése
Post /Pages Igen (Webmaster, Moderator) Igen Új oldal létrehozása (maximum 4 szintes hierarchia)
Get /Pages/{id} Nem - Az adott oldal lekérése aloldalakkal, fájlokkak és cikk előnézetekkel (csak látható oldalak)
Patch /Pages/{id} Igen (Webmaster, Moderator) Igen Az adott oldal szerkesztése (a fájlok hozzácsatolódnak)
Delete /Pages/{id} Igen (Webmaster, Moderator) Igen Az adott oldal törlése (a fájlok is törlődnek)
Get /Posts Igen Igen Az öszzes (vagy editor esetében csak saját) cikk lekérése
Post /Posts Igen Igen Új cikk létrehozása (nincs elfogadva editor - ok számára alapból)
Get /Posts/{id} Nem - Az adott cikk lekérése (csak látható és elfogadott)
Patch /Posts/{id} Igen Igen Az adott cikk szerkesztése (nem elfogadott lesz tartalom változtatásakor editor - ok esetében)
Delete /Posts/{id} Igen Igen Az adott cikk törlése (Hibát dob nem saját cikknél editor - ok esetében)
Get /Users Igen (Webmaster) Igen Összes felhasználó lekérése
Post /Users Igen (Webmaster) Igen Új felhasználó létrehozása
Get /Users/{id} Nem - Az adott felhasználó megtekintése a látható és elfogadott cikkjeivel együtt
Delete /Users/{id} Igen (Webmaster) Igen Az adott felhasználó törlése
Patch /Users/{id} Igen (Webmaster) Igen Az adott felhasználó szerkesztése
Patch /Users/Self Igen Igen A jelenleg belépett felhasználó szerkesztése

Több információ az api - ról a swagger dokumentációban található.