1 // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>.
2 //
3 // Use of this source code is governed by an MIT-style
4 // license that can be found in the LICENSE file.
5 6 //go:build !sqlite_userauth
7 // +build !sqlite_userauth
8 9 package sqlite3
10 11 import (
12 "C"
13 )
14 15 // Authenticate will perform an authentication of the provided username
16 // and password against the database.
17 //
18 // If a database contains the SQLITE_USER table, then the
19 // call to Authenticate must be invoked with an
20 // appropriate username and password prior to enable read and write
21 // access to the database.
22 //
23 // Return SQLITE_OK on success or SQLITE_ERROR if the username/password
24 // combination is incorrect or unknown.
25 //
26 // If the SQLITE_USER table is not present in the database file, then
27 // this interface is a harmless no-op returnning SQLITE_OK.
28 func (c *SQLiteConn) Authenticate(username, password string) error {
29 // NOOP
30 return nil
31 }
32 33 // authenticate provides the actual authentication to SQLite.
34 // This is not exported for usage in Go.
35 // It is however exported for usage within SQL by the user.
36 //
37 // Returns:
38 //
39 // C.SQLITE_OK (0)
40 // C.SQLITE_ERROR (1)
41 // C.SQLITE_AUTH (23)
42 func (c *SQLiteConn) authenticate(username, password string) int {
43 // NOOP
44 return 0
45 }
46 47 // AuthUserAdd can be used (by an admin user only)
48 // to create a new user. When called on a no-authentication-required
49 // database, this routine converts the database into an authentication-
50 // required database, automatically makes the added user an
51 // administrator, and logs in the current connection as that user.
52 // The AuthUserAdd only works for the "main" database, not
53 // for any ATTACH-ed databases. Any call to AuthUserAdd by a
54 // non-admin user results in an error.
55 func (c *SQLiteConn) AuthUserAdd(username, password string, admin bool) error {
56 // NOOP
57 return nil
58 }
59 60 // authUserAdd enables the User Authentication if not enabled.
61 // Otherwise it will add a user.
62 //
63 // When user authentication is already enabled then this function
64 // can only be called by an admin.
65 //
66 // This is not exported for usage in Go.
67 // It is however exported for usage within SQL by the user.
68 //
69 // Returns:
70 //
71 // C.SQLITE_OK (0)
72 // C.SQLITE_ERROR (1)
73 // C.SQLITE_AUTH (23)
74 func (c *SQLiteConn) authUserAdd(username, password string, admin int) int {
75 // NOOP
76 return 0
77 }
78 79 // AuthUserChange can be used to change a users
80 // login credentials or admin privilege. Any user can change their own
81 // login credentials. Only an admin user can change another users login
82 // credentials or admin privilege setting. No user may change their own
83 // admin privilege setting.
84 func (c *SQLiteConn) AuthUserChange(username, password string, admin bool) error {
85 // NOOP
86 return nil
87 }
88 89 // authUserChange allows to modify a user.
90 // Users can change their own password.
91 //
92 // Only admins can change passwords for other users
93 // and modify the admin flag.
94 //
95 // The admin flag of the current logged in user cannot be changed.
96 // THis ensures that their is always an admin.
97 //
98 // This is not exported for usage in Go.
99 // It is however exported for usage within SQL by the user.
100 //
101 // Returns:
102 //
103 // C.SQLITE_OK (0)
104 // C.SQLITE_ERROR (1)
105 // C.SQLITE_AUTH (23)
106 func (c *SQLiteConn) authUserChange(username, password string, admin int) int {
107 // NOOP
108 return 0
109 }
110 111 // AuthUserDelete can be used (by an admin user only)
112 // to delete a user. The currently logged-in user cannot be deleted,
113 // which guarantees that there is always an admin user and hence that
114 // the database cannot be converted into a no-authentication-required
115 // database.
116 func (c *SQLiteConn) AuthUserDelete(username string) error {
117 // NOOP
118 return nil
119 }
120 121 // authUserDelete can be used to delete a user.
122 //
123 // This function can only be executed by an admin.
124 //
125 // This is not exported for usage in Go.
126 // It is however exported for usage within SQL by the user.
127 //
128 // Returns:
129 //
130 // C.SQLITE_OK (0)
131 // C.SQLITE_ERROR (1)
132 // C.SQLITE_AUTH (23)
133 func (c *SQLiteConn) authUserDelete(username string) int {
134 // NOOP
135 return 0
136 }
137 138 // AuthEnabled checks if the database is protected by user authentication
139 func (c *SQLiteConn) AuthEnabled() (exists bool) {
140 // NOOP
141 return false
142 }
143 144 // authEnabled perform the actual check for user authentication.
145 //
146 // This is not exported for usage in Go.
147 // It is however exported for usage within SQL by the user.
148 //
149 // Returns:
150 //
151 // 0 - Disabled
152 // 1 - Enabled
153 func (c *SQLiteConn) authEnabled() int {
154 // NOOP
155 return 0
156 }
157 158 // EOF
159