credential.login()
Log in to Fauna.
Description
The login()
method authenticates an identity in Fauna by providing the
password for a Credential
document. Attempts to login with an incorrect
password result in an error. Call credential.update()
to set a new password.
This method creates a token when it authenticates an identity.
Required privileges
To call login()
in a query, your access token must have a role with the
create
privilege for the Token
system collection. For example:
role manager {
...
privileges Token {
create
}
}
The built-in admin
and server
roles have this privilege.
User-defined functions (UDFs) can be assigned an optional role. If assigned,
this role supersedes the access token’s privileges. If a UDF includes login()
,
the UDF’s role must have the create
privilege for the Token
collection.
Examples
The following simplified sequence creates a user and associates credentials with the user, which can then be used to log in.
-
Create a user in the example
Customer
collection:Customer.create({ name: "John Doe", email: "john.doe@example.com", address: { street: "123 Main St", city: "San Francisco", state: "CA", postalCode: "12345", country: "United States" } })
{ id: "999", coll: Customer, ts: Time("2099-07-31T13:16:15.040Z"), cart: null, orders: "hdW...", name: "John Doe", email: "john.doe@example.com", address: { street: "123 Main St", city: "San Francisco", state: "CA", postalCode: "12345", country: "United States" } }
-
Create a user credential, including the password:
Credential.create({ document: Customer.byId("999"), password: "sekret" })
{ id: "412654692679549440", coll: Credential, ts: Time("2099-06-25T13:27:23.170Z"), document: Customer("999") }
-
Log in with a password:
let document = Customer.byId("999") Credential.byDocument(document)?.login("sekret")
{ id: "412654692933304832", coll: Token, ts: Time("2099-07-31T13:17:46.900Z"), document: Customer("111"), secret: "fn..." }
Is this article helpful?
Tell Fauna how the article can be improved:
Visit Fauna's forums
or email docs@fauna.com
Thank you for your feedback!