-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathauth_pgsql.sql
More file actions
258 lines (207 loc) · 8.58 KB
/
Copy pathauth_pgsql.sql
File metadata and controls
258 lines (207 loc) · 8.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
/*==============================================================*/
/* DBMS name: PostgreSQL 7.3.2 */
/* Created on: 13.06.2003 */
/*==============================================================*/
/*==============================================================*/
/* Table: acl */
/*==============================================================*/
/* íàçíà÷åíûå íà îáúåêò ïðàâà */
CREATE TABLE acl
(
object_id INT NOT NULL DEFAULT 0,
auser_id INT NOT NULL DEFAULT 0,
rights INT NOT NULL DEFAULT 0
);
/* object_id - ñâÿçêà ñ îáúåêòîì */;
/* rights - ìëàäøèé áàéò - ïðàâà íà îáúåêò, ñòàðøèé - íà ñâîéñòâà. */;
/*==============================================================*/
/* Index: ix_acl_0 */
/*==============================================================*/
CREATE UNIQUE INDEX ix_acl_0 ON acl
(
object_id,
auser_id
);
/*==============================================================*/
/* Table: aevent_log */
/*==============================================================*/
CREATE TABLE aevent_log
(
aevent_log_id SERIAL NOT NULL,
auser_id INT NOT NULL DEFAULT 0,
event_type INT NOT NULL DEFAULT 256,
stat INT NOT NULL,
dt TIMESTAMP NOT NULL,
content VARCHAR(255),
PRIMARY KEY (aevent_log_id)
);
/* auser_id - ñîáñòâåííî ïðî êîãî çàïèñûâàåì */;
/* event_type - ÷òî çà ñîáûòèå (îïèñàíû ó auser) */;
/* stat - ñòàòóñ (íàïðèìåð, ïûòàëèñü äîáàâëÿòü è îøèáêà) */;
/* dt - êîãäà çàëîãèëè */;
/* content - òóò ïèøåì ÷òî-òî î ñîáûòèè... */;
/*==============================================================*/
/* Index: ix_aevent_log_0 */
/*==============================================================*/
CREATE INDEX ix_aevent_log_0 ON aevent_log
(
auser_id,
dt
);
/*==============================================================*/
/* Table: asession */
/*==============================================================*/
/* ñåññèè, ïî êîòîðûì îòñëåæèâàåòñÿ çàëîãèíåíîñòü */
CREATE TABLE asession
(
asession_id SERIAL NOT NULL,
auser_id INT NOT NULL DEFAULT 0,
sid VARCHAR(64) NOT NULL,
auid VARCHAR(64) NOT NULL,
dt_access TIMESTAMP NOT NULL,
dt_logon TIMESTAMP,
dt_logout TIMESTAMP,
PRIMARY KEY (asession_id)
);
/* sid - êóêà, âûäàþùàÿñÿ íà ñåññèþ */;
/* auid - êóêà, âûäàþùàÿñÿ íà ïîñòîÿíêó */;
/* dt_access - âðåìÿ ïîñëåäíåãî äîñòóïà */;
/* dt_logon - âðåìÿ ïîñëåäíåãî ëîãèíà */;
/* dt_logout - âðåìÿ ïîñëåäíåãî ëîãàóòà */;
/*==============================================================*/
/* Index: ix_asession_0 */
/*==============================================================*/
CREATE INDEX ix_asession_0 ON asession
(
auser_id
);
/*==============================================================*/
/* Index: ix_asession_1 */
/*==============================================================*/
CREATE INDEX ix_asession_1 ON asession
(
auid,
dt_access
);
/*==============================================================*/
/* Index: ix_asession_2 */
/*==============================================================*/
CREATE INDEX ix_asession_2 ON asession
(
dt_access
);
/*==============================================================*/
/* Table: auser */
/*==============================================================*/
/* ïîëüçîâàòåëè è ãðóïïû
åñòü òàêàÿ ôèãíÿ êàê owner (auser_type_id = 3)
åãî ïðàâà ìåíüøå, ÷åì ïðàâà ïîëüçîâàòåëÿ è ïðàâà ãðóïïû.
ò.å. åñëè ïîëüçîâàòåëþ/ãðóïïå íàçíà÷åíû ïðàâà òî ìû íå ñìîòðèì íà îâíåðà,
åñëè íå íàçíà÷åíû - ñìîòðèì, îí-ëè îâíåð, è åñëè îí - áåðåì ýòè ïðàâà.
event_type - ÷òî çàïèñûâàåì, áèòîâàÿ ìàñêà:
1 - ëîãèí,
2 - ëîãàóò,
8 - ñìåíà ïàðîëÿ,
4 - request_password,
16 - ñìåíà èìåíè,
32 - ñìåíà email,
64 - èçìåíåíèå ïðàâ ïîëüçîâàòåëþ,
128 - èçìåíåíèå ïîëüçîâàòåëÿ,
256 - äîáàâëåíèå ïîëüçîâàòåëÿ
... ïîòîì äàëüøå ïðèäóìàþ */
CREATE TABLE auser
(
auser_id SERIAL NOT NULL,
auser_type_id INT NOT NULL DEFAULT 0,
rights INT NOT NULL DEFAULT 0,
name VARCHAR(127) NOT NULL,
description TEXT,
email VARCHAR(63) NOT NULL,
passwd VARCHAR(63) NOT NULL,
new_passwd VARCHAR(63),
dt_register TIMESTAMP NOT NULL,
dt_logon TIMESTAMP,
dt_logout TIMESTAMP,
is_published INT NOT NULL DEFAULT 1,
is_default INT NOT NULL DEFAULT 0,
connections_limit INT NOT NULL DEFAULT 1,
event_type INT NOT NULL DEFAULT 0,
PRIMARY KEY (auser_id),
UNIQUE (auser_type_id, name)
);
/* auser_type_id - òèï ïîëüçîâàòåëÿ (0 - ïîëüçîâàòåëü, 1 - ãðóïïà) */;
/* rights - ïðàâà ïîëüçîâàòåëÿ/ãðóïïû íà êîðåíü äåðåâà */;
/* name - èìÿ äëÿ ïîäêëþ÷åíèÿ */;
/* description - îïèñàíèå (íàïðèìåð äëÿ ãðóïïû) */;
/* email - email ïîëüçîâàòåëÿ */;
/* passwd - ïàðîëü */;
/* new_passwd - íîâûé ïàðîëü (åñëè çàáûëè, ãåíåðèòüñÿ è æèâåò ïîêà íå ïîäòâåðäÿò) */;
/* dt_register - äàòà/âðåìÿ ðåãèñòðàöèè */;
/* dt_logon - äàòà/âðåìÿ ïîñëåäíåãî ëîãèíà */;
/* dt_logout - äàòà/âðåìÿ ïîñëåäíåãî ëîãàóòà */;
/* is_published - ðàçðåøåí äîñòóï èëè íåò */;
/* is_default - äëÿ ãðóïï. åñëè óñòàíîâëåíà â 1 òî äîáàâëÿåìûé ïîëüçîâàòåëü âêëþ÷àåòñÿ â ãðóïïó */;
/* connections_limit - êîëè÷åñòâî îäíîâðåìåííûõ ïîäêëþ÷åíèé */;
/* event_type - áèòîâàÿ ìàñêà, ÷òî çàïèñûâàåì â ëîã */;
/*==============================================================*/
/* Index: ix_auser_0 */
/*==============================================================*/
CREATE INDEX ix_auser_0 ON auser
(
auser_type_id,
is_published,
dt_logon
);
/*==============================================================*/
/* Index: ix_auser_1 */
/*==============================================================*/
CREATE INDEX ix_auser_1 ON auser
(
dt_register
);
/*==============================================================*/
/* Index: ix_auser_2 */
/*==============================================================*/
CREATE INDEX ix_auser_2 ON auser
(
auser_type_id,
name,
passwd
);
/*==============================================================*/
/* Index: ix_auser_3 */
/*==============================================================*/
CREATE INDEX ix_auser_3 ON auser
(
auser_type_id,
email,
name
);
/*==============================================================*/
/* Table: auser_to_auser */
/*==============================================================*/
/* ïðèíàäëåæíîñòü ïîëüçîâàòåëÿ ãðóïïå */
CREATE TABLE auser_to_auser
(
auser_id INT NOT NULL DEFAULT 0,
parent_id INT NOT NULL DEFAULT 0,
rights INT NOT NULL DEFAULT 0
);
/* auser_id - êòî (ññûëêà íà ïîëüçîâàòåëÿ) */;
/* parent_id - â êàêóþ ãðóïïó âêëþ÷åí (ññûëêà íà ãðóïïó) */;
/* rights - ïðàâà, ñ êîòîðûå ïîëüçîâàòåëü èìååò íà ãðóïïó */;
/*==============================================================*/
/* Index: ix_auser_to_auser_0 */
/*==============================================================*/
CREATE UNIQUE INDEX ix_auser_to_auser_0 ON auser_to_auser
(
auser_id,
parent_id
);
/*==============================================================*/
/* Insert DEFAULT data */
/*==============================================================*/
INSERT INTO auser (auser_id, name, passwd, email, description, auser_type_id, rights, is_published, dt_register) VALUES (1, 'Owner', 'onwner', 'owner', 'Âëàäåëåö îáúåêòîâ', 2, 16777215, 1, CURRENT_TIMESTAMP);
INSERT INTO auser (auser_id, name, passwd, email, description, auser_type_id, rights, is_published, dt_register) VALUES (2, 'Admins', 'group', 'group', 'Âñå àäìèíèñòðèðóþùèå ïîëüçîâàòåëè', 1, 16777215, 1, CURRENT_TIMESTAMP);
INSERT INTO auser (auser_id, name, passwd, email, description, auser_type_id, rights, is_published, dt_register) VALUES (3, 'admin', 'admin', 'misha@design.ru', '', 0, 16777215, 1, CURRENT_TIMESTAMP);
INSERT INTO auser_to_auser (auser_id, parent_id) VALUES (3,2);