login()
Log in to Fauna.
Signature
login(password: String): Token | NullToken
login(password: String, ttl Time): Token | NullToken
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 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 built-in Token
collection. For example:
role myRole {
...
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
Person
collection:Person.create({ name: "mario", email: "mario@hello.com", password: "sekret" })
{ id: "373273910203908129", coll: Person, ts: Time("2023-08-17T02:49:51.180Z"), name: "mario", email: "mario@hello.com", password: "sekret" }
-
Create a user credential, including the password:
Credentials.create({ document: Person.byId("373273910203908129"), password: "sekret" })
{ id: "373273931423940641", coll: Credential, ts: Time("2023-08-17T02:50:11.420Z"), document: Person.byId("373273910203908129") }
-
Log in with a password:
{ id: "373274451635077153", coll: Token, ts: Time("2023-08-17T02:58:27.540Z"), document: Person.byId("373273910203908129"), secret: "fnEFLiMi1XAAIQUh3mNk4AAhMPnjoGQZDiyoEG89cM40a9_sDrw" }
You can also combine the procedure into a single expression:
Credential.byDocument(Person.byId("373273910203908129"))!.login("sekret")
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!