This statement was deprecated in favour of DEFINE ACCESS ... TYPE RECORD in SurrealDB versions 2.x, and has been removed as of SurrealDB 3.0. Learn more in the DEFINE ACCESS.
DEFINE SCOPE statement
Setting scope access allows SurrealDB to operate as a web database. With scopes you can set authentication and access rules which enable fine-grained access to tables and fields.
Requirements
Statement syntax
SurrealQL Syntax
DEFINE SCOPE [ OVERWRITE | IF NOT EXISTS ] @name SESSION @duration SIGNUP @expression SIGNIN @expression [ COMMENT @string ]
Example usage
Below shows how you can create a scope using the DEFINE SCOPE statement.
DEFINE SCOPE account SESSION 24h
SIGNUP ( CREATE user SET email = $email, pass = crypto::argon2::generate($pass) )
SIGNIN ( SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(pass, $pass) )
;
Using IF NOT EXISTS clause
The IF NOT EXISTS clause can be used to define a scope only if it does not already exist. If the scope already exists, the DEFINE SCOPE statement will return an error.
DEFINE SCOPE IF NOT EXISTS example;