agungsugiarto / codeigniter4-authentication

The codeigniter4\authentication component provides an API for authentication and includes concrete authentication adapters for common use case scenarios.
MIT License
49 stars 9 forks source link

Set the path the user should be redirected to when they are not authenticated. #26

Closed ibukunakins closed 2 years ago

ibukunakins commented 2 years ago

Whenever I try to access Auth protected route, it throws error. How do I set the set the path the user should be redirected to when they are not authenticated so the error is not thrown?

agungsugiarto commented 2 years ago

Solutions:

  1. Throw exception with render to view, create file error_401.php to folder app/Views/errors/html and copy this line:

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>401 Unauthenticated</title>
    
    <style>
        div.logo {
            height: 200px;
            width: 155px;
            display: inline-block;
            opacity: 0.08;
            position: absolute;
            top: 2rem;
            left: 50%;
            margin-left: -73px;
        }
        body {
            height: 100%;
            background: #fafafa;
            font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
            color: #777;
            font-weight: 300;
        }
        h1 {
            font-weight: lighter;
            letter-spacing: 0.8;
            font-size: 3rem;
            margin-top: 0;
            margin-bottom: 0;
            color: #222;
        }
        .wrap {
            max-width: 1024px;
            margin: 5rem auto;
            padding: 2rem;
            background: #fff;
            text-align: center;
            border: 1px solid #efefef;
            border-radius: 0.5rem;
            position: relative;
        }
        pre {
            white-space: normal;
            margin-top: 1.5rem;
        }
        code {
            background: #fafafa;
            border: 1px solid #efefef;
            padding: 0.5rem 1rem;
            border-radius: 5px;
            display: block;
        }
        p {
            margin-top: 1.5rem;
        }
        .footer {
            margin-top: 2rem;
            border-top: 1px solid #efefef;
            padding: 1em 2em 0 2em;
            font-size: 85%;
            color: #999;
        }
        a:active,
        a:link,
        a:visited {
            color: #dd4814;
        }
    </style>
    </head>
    <body>
    <div class="wrap">
        <h1>401 - Unauthenticated</h1>
        <p>
            <?php if (! empty($message)) : ?>
                Go back to <a href="<?= route_to('login') ?>">login page</a>
            <?php else : ?>
                Sorry! Cannot seem to find the page you were looking for.
            <?php endif ?>
        </p>
    </div>
    </body>
    </html>


So whanever is throw with code 401, will be display view.

<img width="793" alt="image" src="https://user-images.githubusercontent.com/10989147/146473956-c0cafc0b-f31d-42ce-a526-ea0891784982.png">