{
    "path": "/home/krm/dev/mimer-academia/server/web/Tutorial/middeleware-to-check-if-user-logged-in.sv.json",
    "s": "Ignor",
    "invert": true,
    "level": 1,
    "title": [
        "Skapa en middelwer som bara tillåter inloggade personer"
    ],
    "description": [
        [
            {
                "form": "important"
            },
            "author: krm\ncreated: 2022-05-22\nstatus: alpha\n"
        ]
    ],
    "statments": [],
    "comment": [],
    "cards": [
        {
            "level": 1,
            "title": [
                "# 👁️‍🗨️ Om detta avsnitt"
            ],
            "description": [
                "Du har skapat ett sätt att komma in på sidan. Gör nu så att detta krävs inloggning på alla sidor. För detta behöver vi ett middelware."
            ],
            "statments": [
                {
                    "description": [
                        "🦉 ",
                        [
                            {
                                "link": "./let-a-user-logg-in.sv.html"
                            },
                            "Låt en användare logga in"
                        ]
                    ]
                }
            ],
            "comment": []
        },
        {
            "level": 1,
            "index": 1,
            "title": [
                "Deklarera ett midelware"
            ],
            "description": [
                "Först deklarerar vi en funktion. Detta ska göra i main funktionen efter objektet som används för att lagra tokens."
            ],
            "lang": "js",
            "code": "function isLoggedIn(req:any, res:any, next:any) {\n// CODE\n}",
            "statments": [],
            "comment": []
        },
        {
            "level": 1,
            "index": 2,
            "title": [
                "Hämta användaren som motsvaras av kaka"
            ],
            "description": [
                "Vi ska börja med att titta i kakan ",
                [
                    {
                        "form": "important"
                    },
                    "login"
                ],
                " och se vilken användare detta motsvarar."
            ],
            "lang": "js",
            "code": "let token = req.cookies.login??\"\";\nlet user = token_storage[token];",
            "statments": [],
            "comment": [
                "Observera att om toknet inte finns så kommer user få värdet ",
                [
                    {
                        "form": "important"
                    },
                    "undefined"
                ],
                "."
            ]
        },
        {
            "level": 1,
            "index": 3,
            "title": [
                "Kontrollera att användaren blivit inloggad"
            ],
            "description": [
                "Vi kontollerar nu att user verkligen finns. Om så är fallet forsätter server med att se vad som ska göras härnäst med anropet."
            ],
            "lang": "js",
            "code": "if(user) {\nnext()\n}",
            "statments": [],
            "comment": []
        },
        {
            "level": 1,
            "index": 4,
            "title": [
                "Om användare inte är inloggad."
            ],
            "description": [
                "Om det inte är så, då ska användare få ett meddelande om att den borde logga in."
            ],
            "lang": "sh",
            "code": "else {\nres.status(401).send(\"Not allowed\");\nconsole.error(\"Not allowed\");\n}",
            "statments": [],
            "comment": []
        },
        {
            "level": 1,
            "index": 5,
            "title": [
                "Registrera middelware"
            ],
            "description": [
                "Registera denna som ett midelware på path som ska kräver inloggning."
            ],
            "lang": "sh",
            "code": "app.use(\"/secret/\", isLoggedIn);",
            "statments": [],
            "comment": []
        },
        {
            "level": 1,
            "title": [
                "✔️ 6. Skapa ett enkelt medelande som användaren måste logg in för att se"
            ],
            "description": [
                "Gör en get funktion som är kopplat till pathen ovan. Det krävs nu ionlogg för att kunna läsa den."
            ],
            "lang": "sh",
            "code": "app.get(\"/secret/test\", function (req, res) {\nres.send(\"Hello World!\");\n});",
            "statments": [],
            "comment": [
                "Tänk på att get funktion måste anropas efter midelwaret ovan."
            ]
        },
        {
            "level": 1,
            "index": 7,
            "title": [
                "✔️ Starta om servern och testa anropet"
            ],
            "description": [
                "Starta om server och gå in på sidan. Försök sedan logga in."
            ],
            "statments": [
                {
                    "description": [
                        "🔗 ",
                        [
                            {
                                "link": "http://localhost:3000/secret/test"
                            },
                            "Försök gå in occh bli avspisat"
                        ]
                    ]
                },
                {
                    "description": [
                        "🔗 ",
                        [
                            {
                                "link": "http://localhost:3000/login.html"
                            },
                            "Logga in"
                        ]
                    ]
                },
                {
                    "description": [
                        "🔗 ",
                        [
                            {
                                "link": "http://localhost:3000/secret/test"
                            },
                            "Och nu kommer du in på sidan!"
                        ]
                    ]
                }
            ],
            "comment": []
        }
    ]
}