aboutsummaryrefslogtreecommitdiff
path: root/ext/userauth/sqlite3userauth.h
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2014-09-10 19:01:14 +0000
committerdrh <drh@noemail.net>2014-09-10 19:01:14 +0000
commitf442e33e3a794b198071a9c5f76aa33eb74c3327 (patch)
treedac5fa82690fd0d639ad40c31cda70567b6a0aa7 /ext/userauth/sqlite3userauth.h
parente933b83f029d0c749346391c86a47217f7e294cb (diff)
downloadsqlite-f442e33e3a794b198071a9c5f76aa33eb74c3327.tar.gz
sqlite-f442e33e3a794b198071a9c5f76aa33eb74c3327.zip
Add the ".user" shell command and implement the sqlite3_user_add()
routine. Incremental check-in. The code compiles but does not work. FossilOrigin-Name: a0455f9deb603bf91684158d911269622720fc1a
Diffstat (limited to 'ext/userauth/sqlite3userauth.h')
-rw-r--r--ext/userauth/sqlite3userauth.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/ext/userauth/sqlite3userauth.h b/ext/userauth/sqlite3userauth.h
new file mode 100644
index 000000000..9f95e9fe7
--- /dev/null
+++ b/ext/userauth/sqlite3userauth.h
@@ -0,0 +1,88 @@
+/*
+** 2014-09-08
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+*************************************************************************
+**
+** This file contains the application interface definitions for the
+** user-authentication extension feature.
+**
+** To compile with the user-authentication feature, append this file to
+** end of an SQLite amalgamation header file ("sqlite3.h"), then add
+** the SQLITE_USER_AUTHENTICATION compile-time option. See the
+** user-auth.txt file in the same source directory as this file for
+** additional information.
+*/
+#ifdef SQLITE_USER_AUTHENTICATION
+
+/*
+** If a database contains the SQLITE_USER table, then the
+** sqlite3_user_authenticate() interface must be invoked with an
+** appropriate username and password prior to enable read and write
+** access to the database.
+**
+** Return SQLITE_OK on success or SQLITE_ERROR if the username/password
+** combination is incorrect or unknown.
+**
+** If the SQLITE_USER table is not present in the database file, then
+** this interface is a harmless no-op returnning SQLITE_OK.
+*/
+int sqlite3_user_authenticate(
+ sqlite3 *db, /* The database connection */
+ const char *zUsername, /* Username */
+ int nPW, /* Number of bytes in aPW[] */
+ const char *aPW /* Password or credentials */
+);
+
+/*
+** The sqlite3_user_add() interface can be used (by an admin user only)
+** to create a new user. When called on a no-authentication-required
+** database, this routine converts the database into an authentication-
+** required database, automatically makes the added user an
+** administrator, and logs in the current connection as that user.
+** The sqlite3_user_add() interface only works for the "main" database, not
+** for any ATTACH-ed databases. Any call to sqlite3_user_add() by a
+** non-admin user results in an error.
+*/
+int sqlite3_user_add(
+ sqlite3 *db, /* Database connection */
+ const char *zUsername, /* Username to be added */
+ int isAdmin, /* True to give new user admin privilege */
+ int nPW, /* Number of bytes in aPW[] */
+ const char *aPW /* Password or credentials */
+);
+
+/*
+** The sqlite3_user_change() interface can be used to change a users
+** login credentials or admin privilege. Any user can change their own
+** login credentials. Only an admin user can change another users login
+** credentials or admin privilege setting. No user may change their own
+** admin privilege setting.
+*/
+int sqlite3_user_change(
+ sqlite3 *db, /* Database connection */
+ const char *zUsername, /* Username to change */
+ int isAdmin, /* Modified admin privilege for the user */
+ int nPW, /* Number of bytes in aPW[] */
+ const char *aPW /* Modified password or credentials */
+);
+
+/*
+** The sqlite3_user_delete() interface can be used (by an admin user only)
+** to delete a user. The currently logged-in user cannot be deleted,
+** which guarantees that there is always an admin user and hence that
+** the database cannot be converted into a no-authentication-required
+** database.
+*/
+int sqlite3_user_delete(
+ sqlite3 *db, /* Database connection */
+ const char *zUsername /* Username to remove */
+);
+
+#endif /* SQLITE_USER_AUTHENTICATION */