SurrealDB Docs Logo

Enter a search query

Warning

This statement is deprecated in favor of DEFINE ACCESS ... TYPE RECORD. 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.

-- 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) )
;

Using IF NOT EXISTS clause

Available since: v1.3.0

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;

On this page

© SurrealDB GitHub Discord Community Cloud Features Releases Install