Tac-online - Back-end
Front-end
Index
Back-end
Routes
Vinst-funktion
Vinstfunktionen är nödvändig för att kontrollera ifall en användare har vunnit efter att en användare eller dator har lagt en spelpjäs. Efter att en spelare har lagt en spelpjäs, kallas en metod som kontrollerar om spelet ska avslutas eller inte. Detta avgörs genom att kontrollera spelplanen och se ifall det finns någon spelare som har fått tre i rad. Om det stämmer att en spelare har vunnit, avslutas spelet och en vinnare utses. Vinnaren samt förloraren får sin statistik sparad i databasen.
Login-route
Denna route är gjord för att hantera inloggning av redan skapade användare. I post-förfrågningar tar routen ut det som står i inloggningsfältet. SQL-kod exekveras sedan för att få ut lämplig data såsom namn, lösenord och id där namnet är lika med det namnet som är angivet i inloggningsfältet. Det ifyllda lösenordet kontrolleras ifall det matchar en lagrad hash. Om lösenordet inte är tomt och är lika med dess hash skapas en ny användarprofil där id och namn sparas. Därefter dirigeras användaren till spelplanen. Om inloggning misslyckas notifieras användaren med ett flashmeddelande Vid en GET förfrågan renderas HTML mallen login.html.
Create-route
Syftet med denna route är att möjliggöra användare att skapa nya konton . I en post förfrågan tar routen ut lämpliga värden som namn och lösenord från sidans textfält. Om användaren har skrivit in tomma värden renderas templaten create.html om igen. Om värdena överensstämmer med det som finns i databasen genereras en hashad variant av lösenordet, detta görs i syfte att skapa säkrare lösenordshantering och förhindra att användare kan komma åt andras lösenord. SQL kod skrivs och exekveras sedan för att en ny användare ska skapas i tabellen Användare. Sist dirigeras användaren till inloggningssidan. I en get förfrågan renderas sidan create.html genom att returnera funktionen “render_template”, som i sin tur renderar mallen i HTML filen.
Versus-route
Routen hanterar inloggning till flerspelarläget. Användaren loggar in med varsitt konto och turas om att lägga en bricka i taget, detta pågår tills någon vunnit eller 3x3 spelbrädet fylls. Vid en GET förfrågan renderas mallen login2p.html, detta är ett formulär för inloggning till tvåspelarläget, se figur 13. Vid POST förfrågningar plockar routen ut användare med namnen på de två ifyllda spelarna, som givits via sidans inloggningsformulär. Därefter görs en anslutning till spelets databas där en sql fråga frågar om användarnamnet givet av formuläret överensstämmer med något användarnamn i databasen. När användaren trycker på inloggningsknappen skapas en anslutning till databasen. Där skickar klienten en förfrågan för att plocka ut och jämföra de ifyllda användarnamnen mot de redan existerande. Om användarna existerar i databasen tas namnen skapas för vardera användare. Denna innehåller namn, krypterat lösenord och id. Om namnet inte är tomt jämförs det angivna lösenordet med den hash som är kopplad till det angivna namnet i databasen. Har användaren fyllt i rätt lösenord görs samma kontroll för spelare två. Lyckas inte båda spelare logga in kommer ett varningsmeddelande och sidan laddas om. Vid lyckad inloggning dirigeras användarna till spelsidan. Här skapas en ny spelsession som innehåller spelarnas namn och id, vid spelets slut blir dessa variabler märkta som vinnare eller förlorare.
ER-diagram
ER-diagram
ER-diagram