signin()

Signs in to a specific access method for an already signed up record user.

Method Syntax

db.signin(credentials)

Arguments

ArgumentDescription
credentials Variables used in a signin query.

Example usage

// Use the following statement to set up the access
//
// DEFINE ACCESS account ON DATABASE TYPE RECORD
// SIGNUP ( CREATE user SET email = $email, pass = crypto::argon2::generate($pass) )
// SIGNIN ( SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(pass, $pass) )
// DURATION FOR TOKEN 15m, FOR SESSION 12h
// ;

use surrealdb::engine::remote::ws::Ws;
use surrealdb::opt::auth::Record;
use surrealdb::Surreal;
use surrealdb_types::SurrealValue;

#[derive(SurrealValue)]
struct Credentials {
email: String,
pass: String,
}

#[tokio::main]
async fn main() -> surrealdb::Result<()> {
let db = Surreal::new::<Ws>("127.0.0.1:8000").await?;

db.use_ns("main").use_db("main").await?;

let token = db
.signin(Record {
namespace: "main".to_string(),
database: "main".to_string(),
access: "account".to_string(),
params: Credentials {
email: "info@surrealdb.com".to_string(),
pass: "123456".to_string(),
},
})
.await?;

// ⚠️: It is important to note that the token should be handled securely and protected from unauthorized access.
let jwt = token.access.as_insecure_token();
dbg!(jwt);
Ok(())
}

See also