Hello, I am trying to implement a middleware to protect the routes in my website. However it is not working as it is throwing a AppwriteException: User (role: guests) missing scope (account) at Generator.next (<anonymous>).
TL;DR
Middleware code is incorrectly checking for authentication. User isn't logged in but it throws an exception. Correct code to properly authenticate users.
Solution:
Update the middleware function to properly check for user authentication before returning NextResponse.next().TypeScript
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
import { Client, Account } from "appwrite";
import { appwriteConfig } from "@/lib/appwrite/config";
export async function middleware(request: NextRequest) {
const client = new Client()
.setProject(appwriteConfig.projectId);
const account = new Account(client);
let isAuthenticated;
isAuthenticated = await account.get();
if (!isAuthenticated && request.nextUrl.pathname === "/home" ) {
console.log(isAuthenticated);
const signInUrl = new URL('/sign-in', request.url);
return NextResponse.redirect(signInUrl);
}
return NextResponse.next();
}
For now I have the code so that the user can't acess the home page if they have not logged in
Recommended threads
- Auth activity page is broken
- iOS Auth - Apple OAuth not working.
when i use the prod app, the apple auth on ios is not working, it shows me: missing redirect url. however the debug version, connected to another project is wor...
- TEAM INVITE
There is a problem with the team invitation. When a user invites other users, that time, the newly created email address they don't get the invite link and old ...