Back

(role: applications) missing scope (account)

  • 0
  • Web
  • Cloud
yuvraj
26 Aug, 2024, 08:44

i'm refactoring my code, but I'm getting this issue when trying to get the current user logged in. My api key is correct with all auth/database scopes. Here are my codes:

Appwrite service

TypeScript
class AppwriteService {
    private static adminClient: Client;
    private static getAdminClient(): Client {
        if (!this.adminClient) {
            this.adminClient = new Client()
                .setEndpoint(APPWRITE_ENDPOINT)
                .setProject(APPWRITE_PROJECT)
                .setKey(APPWRITE_API_KEY);
        }
        return this.adminClient;
    }
    public static getAppwriteAdminClient() {
        const client = this.getAdminClient();
        return {
            get account() {
                return new Account(client);
            },
            get users() {
                return new Users(client);
            },
            get databases() {
                return new Databases(client);
            },
        };
    }
}

export default AppwriteService;

Auth service

TypeScript
class AuthService {
    private static readonly account: Account = AppwriteService.getAppwriteAdminClient().account;

    public static async getLoggedInUser(): Promise<Models.User<Models.Preferences>> {
        return await this.account.get();
    }
}
export default AuthService;

usage in page.tsx

TypeScript
  const isLoggedIn = await AuthService.getLoggedInUser()
TL;DR
Developers are missing the account scope when trying to get the current logged-in user. In the `AuthService` class, make sure to add the missing scope to the account service call. Solution: ```javascript public static async getLoggedInUser(): Promise<Models.User<Models.Preferences>> { return await this.account.get(); } ```
Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more