• Start

Statements

/

DEFINE

DEFINE SCOPE

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.

Warning

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.

SurrealQL Syntax
DEFINE SCOPE [ OVERWRITE | IF NOT EXISTS ] @name SESSION @duration SIGNUP @expression SIGNIN @expression [ COMMENT @string ]

Below shows how you can create a scope using the DEFINE SCOPE statement.

-- Enable scope authentication directly in SurrealDB
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) )
;

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.

-- Create a SCOPE if it does not already exist
DEFINE SCOPE IF NOT EXISTS example;

Was this page helpful?