--- displayed_sidebar: jsClientSidebar slug: /references/js-client/AuthResource --- import ParameterTypes from "@site/src/components/ParameterTypes" # AuthResource This class is used to send requests to [Store Auth API Routes](https://docs.medusajs.com/api/store#auth). All its method are available in the JS Client under the `medusa.auth` property. The methods in this class allows you to manage a customer's session, such as login or log out. You can send authenticated requests for a customer either using the Cookie header or using the JWT Token. When you log the customer in using the [authenticate](AuthResource.mdx#authenticate) method, the JS client will automatically attach the cookie header in all subsequent requests. Related Guide: [How to implement customer profiles in your storefront](https://docs.medusajs.com/modules/customers/storefront/implement-customer-profiles). ## Methods ### authenticate Authenticate a customer using their email and password. If the customer is authenticated successfully, the cookie is automatically attached to subsequent requests sent with the JS Client. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.auth .authenticate({ email: "user@example.com", password: "user@example.com", }) .then(({ customer }) => { console.log(customer.id) }) ``` #### Parameters ", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ", "optional": false, "defaultValue": "", "description": "Resolves to the customer's details.", "expandable": false, "children": [ { "name": "StoreAuthRes", "type": "`object`", "description": "The customer's details.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "customer", "type": "[`Customer`](../internal/classes/internal.Customer.mdx)", "description": "Customer's details.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "billing_address", "type": "[`Address`](../internal/classes/internal.Address.mdx)", "description": "The details of the billing address associated with the customer.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "billing_address_id", "type": "``null`` \\| `string`", "description": "The customer's billing address ID", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "created_at", "type": "`Date`", "description": "The date with timezone at which the resource was created.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "deleted_at", "type": "``null`` \\| `Date`", "description": "The date with timezone at which the resource was deleted.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "email", "type": "`string`", "description": "The customer's email", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "first_name", "type": "`string`", "description": "The customer's first name", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "groups", "type": "[`CustomerGroup`](../internal/classes/internal.CustomerGroup.mdx)[]", "description": "The customer groups the customer belongs to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "has_account", "type": "`boolean`", "description": "Whether the customer has an account or not", "optional": false, "defaultValue": "false", "expandable": false, "children": [] }, { "name": "id", "type": "`string`", "description": "The customer's ID", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "last_name", "type": "`string`", "description": "The customer's last name", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "metadata", "type": "Record<`string`, `unknown`\\>", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "orders", "type": "[`Order`](../internal/classes/internal.Order.mdx)[]", "description": "The details of the orders this customer placed.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "phone", "type": "`string`", "description": "The customer's phone number", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_addresses", "type": "[`Address`](../internal/classes/internal.Address.mdx)[]", "description": "The details of the shipping addresses associated with the customer.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### deleteSession Log out the customer and remove their authentication session. This method requires [customer authentication](AuthResource.mdx#authenticate). #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.auth.deleteSession().then(() => { // customer logged out successfully }) ``` #### Parameters ", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ", "optional": false, "defaultValue": "", "description": "Resolves when customer is logged out successfully.", "expandable": false, "children": [] } ]} /> ___ ### exists Check if the email is already used by another registered customer. Can be used to validate a new customer's email. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.auth.exists("user@example.com") ``` #### Parameters ", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ", "optional": false, "defaultValue": "", "description": "Resolves to the result of the check.", "expandable": false, "children": [ { "name": "StoreGetAuthEmailRes", "type": "`object`", "description": "Details on whether the email exists.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "exists", "type": "`boolean`", "description": "Whether email exists or not.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ]} /> ___ ### getSession Retrieve the details of the logged-in customer. Can also be used to check if there is an authenticated customer. This method requires [customer authentication](AuthResource.mdx#authenticate). #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged medusa.auth.getSession().then(({ customer }) => { console.log(customer.id) }) ``` #### Parameters ", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ", "optional": false, "defaultValue": "", "description": "Resolves to the customer's details.", "expandable": false, "children": [ { "name": "StoreAuthRes", "type": "`object`", "description": "The customer's details.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "customer", "type": "[`Customer`](../internal/classes/internal.Customer.mdx)", "description": "Customer's details.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "billing_address", "type": "[`Address`](../internal/classes/internal.Address.mdx)", "description": "The details of the billing address associated with the customer.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "billing_address_id", "type": "``null`` \\| `string`", "description": "The customer's billing address ID", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "created_at", "type": "`Date`", "description": "The date with timezone at which the resource was created.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "deleted_at", "type": "``null`` \\| `Date`", "description": "The date with timezone at which the resource was deleted.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "email", "type": "`string`", "description": "The customer's email", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "first_name", "type": "`string`", "description": "The customer's first name", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "groups", "type": "[`CustomerGroup`](../internal/classes/internal.CustomerGroup.mdx)[]", "description": "The customer groups the customer belongs to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "has_account", "type": "`boolean`", "description": "Whether the customer has an account or not", "optional": false, "defaultValue": "false", "expandable": false, "children": [] }, { "name": "id", "type": "`string`", "description": "The customer's ID", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "last_name", "type": "`string`", "description": "The customer's last name", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "metadata", "type": "Record<`string`, `unknown`\\>", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "orders", "type": "[`Order`](../internal/classes/internal.Order.mdx)[]", "description": "The details of the orders this customer placed.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "phone", "type": "`string`", "description": "The customer's phone number", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_addresses", "type": "[`Address`](../internal/classes/internal.Address.mdx)[]", "description": "The details of the shipping addresses associated with the customer.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### getToken Authenticate the customer and retrieve a JWT token to use for subsequent authenticated requests. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.auth .getToken({ email: "user@example.com", password: "supersecret", }) .then(({ access_token }) => { console.log(access_token) }) ``` #### Parameters ", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ", "optional": false, "defaultValue": "", "description": "Resolves to the access token of the customer, if they're authenticated successfully.", "expandable": false, "children": [ { "name": "StoreBearerAuthRes", "type": "`object`", "description": "The access token details.", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "access_token", "type": "`string`", "description": "Access token that can be used to send authenticated requests.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ]} />