Subversion Repositories DevTools

Rev

Rev 5512 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3927 dpurdie 1
--------------------------------------------------------
5953 dpurdie 2
--  File created - Thursday-July-14-2016   
3927 dpurdie 3
--------------------------------------------------------
4
--------------------------------------------------------
5297 dpurdie 5
--  DDL for Type ACCMGR_NUMBER_TAB_T
6
--------------------------------------------------------
7
 
8
  CREATE OR REPLACE TYPE "ACCESS_MANAGER"."ACCMGR_NUMBER_TAB_T" as TABLE of NUMBER
9
 
10
/
11
--------------------------------------------------------
12
--  DDL for Sequence SEQ_APP_ID
13
--------------------------------------------------------
14
 
15
   CREATE SEQUENCE  "ACCESS_MANAGER"."SEQ_APP_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 101 CACHE 20 ORDER  NOCYCLE ;
16
--------------------------------------------------------
17
--  DDL for Sequence SEQ_DT_ID
18
--------------------------------------------------------
19
 
20
   CREATE SEQUENCE  "ACCESS_MANAGER"."SEQ_DT_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 261 CACHE 20 ORDER  NOCYCLE ;
21
--------------------------------------------------------
22
--  DDL for Sequence SEQ_OBJ_ID
23
--------------------------------------------------------
24
 
5953 dpurdie 25
   CREATE SEQUENCE  "ACCESS_MANAGER"."SEQ_OBJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1441 CACHE 20 ORDER  NOCYCLE ;
5297 dpurdie 26
--------------------------------------------------------
27
--  DDL for Sequence SEQ_ROLE_ID
28
--------------------------------------------------------
29
 
5953 dpurdie 30
   CREATE SEQUENCE  "ACCESS_MANAGER"."SEQ_ROLE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1681 CACHE 20 ORDER  NOCYCLE ;
5297 dpurdie 31
--------------------------------------------------------
32
--  DDL for Sequence SEQ_USER_ID
33
--------------------------------------------------------
34
 
5953 dpurdie 35
   CREATE SEQUENCE  "ACCESS_MANAGER"."SEQ_USER_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 13362 CACHE 20 ORDER  NOCYCLE ;
5297 dpurdie 36
--------------------------------------------------------
37
--  DDL for Table APPLICATIONS
38
--------------------------------------------------------
39
 
40
  CREATE TABLE "ACCESS_MANAGER"."APPLICATIONS" 
41
   (	"APP_ID" NUMBER, 
42
	"APPLICATION_NAME" VARCHAR2(1000 BYTE), 
43
	"DB_SCHEMA" VARCHAR2(1000 BYTE), 
44
	"TNS_NAME" VARCHAR2(1000 BYTE), 
45
	"SCHEMA_USERNAME" VARCHAR2(255 BYTE), 
46
	"SCHEMA_PASSWORD" VARCHAR2(255 BYTE), 
47
	"ACRONYM" VARCHAR2(3 BYTE), 
48
	"IS_RUNNING" CHAR(1 BYTE)
49
   ) SEGMENT CREATION IMMEDIATE 
50
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
51
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
52
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
53
  TABLESPACE "RELEASEM_DATA" ;
54
--------------------------------------------------------
55
--  DDL for Table APPLICATION_PAGES
56
--------------------------------------------------------
57
 
58
  CREATE TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" 
59
   (	"PAGE_ID" NUMBER, 
60
	"APP_ID" NUMBER, 
61
	"PAGE_NAME" VARCHAR2(1000 BYTE)
62
   ) SEGMENT CREATION IMMEDIATE 
63
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
64
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
65
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
66
  TABLESPACE "RELEASEM_DATA" ;
67
--------------------------------------------------------
68
--  DDL for Table CONTROL_OBJECTS
69
--------------------------------------------------------
70
 
71
  CREATE TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" 
72
   (	"OBJ_ID" NUMBER, 
73
	"APP_ID" NUMBER, 
74
	"OBJ_NAME" VARCHAR2(1000 BYTE), 
75
	"PARENT_OBJ_ID" NUMBER, 
76
	"OBJ_DESCRIPTION" VARCHAR2(1000 BYTE)
77
   ) SEGMENT CREATION IMMEDIATE 
78
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
79
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
80
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
81
  TABLESPACE "RELEASEM_DATA" ;
82
--------------------------------------------------------
83
--  DDL for Table DATA_PERMISSIONS
84
--------------------------------------------------------
85
 
86
  CREATE TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" 
87
   (	"DT_ID" NUMBER, 
88
	"ROLE_ID" NUMBER, 
89
	"REF_COLUMN_VAL" NUMBER, 
90
	"PERM_ID" NUMBER, 
91
	"PERM_VALUE" CHAR(1 BYTE)
92
   ) SEGMENT CREATION IMMEDIATE 
93
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
94
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
95
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
96
  TABLESPACE "RELEASEM_DATA" ;
97
--------------------------------------------------------
98
--  DDL for Table DATA_TABLES
99
--------------------------------------------------------
100
 
101
  CREATE TABLE "ACCESS_MANAGER"."DATA_TABLES" 
102
   (	"DT_ID" NUMBER, 
103
	"OBJ_ID" NUMBER, 
104
	"TABLE_NAME" VARCHAR2(1000 BYTE), 
105
	"REF_COLUMN_NAME" VARCHAR2(1000 BYTE), 
106
	"DISPLAY_COLUMN_NAME" VARCHAR2(1000 BYTE)
107
   ) SEGMENT CREATION IMMEDIATE 
108
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
109
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
110
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
111
  TABLESPACE "RELEASEM_DATA" ;
112
--------------------------------------------------------
113
--  DDL for Table LOGIN_TRAIL
114
--------------------------------------------------------
115
 
116
  CREATE TABLE "ACCESS_MANAGER"."LOGIN_TRAIL" 
117
   (	"ENUM_EVENT" NUMBER, 
118
	"USER_NAME" VARCHAR2(1000 BYTE), 
119
	"CLIENT_IP" VARCHAR2(255 BYTE), 
120
	"APP_ID" NUMBER, 
121
	"STAMP" DATE, 
122
	"COMMENTS" VARCHAR2(4000 BYTE)
123
   ) SEGMENT CREATION IMMEDIATE 
124
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
125
  STORAGE(INITIAL 7340032 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
126
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
127
  TABLESPACE "RELEASEM_DATA" ;
128
--------------------------------------------------------
129
--  DDL for Table PAGE_CONTROL_OBJECTS
130
--------------------------------------------------------
131
 
132
  CREATE TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" 
133
   (	"PAGE_ID" NUMBER, 
134
	"OBJ_ID" NUMBER
135
   ) SEGMENT CREATION IMMEDIATE 
136
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
137
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
138
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
139
  TABLESPACE "RELEASEM_DATA" ;
140
--------------------------------------------------------
141
--  DDL for Table PERMISSION_TYPES
142
--------------------------------------------------------
143
 
144
  CREATE TABLE "ACCESS_MANAGER"."PERMISSION_TYPES" 
145
   (	"PERM_ID" NUMBER, 
146
	"PERM_NAME" VARCHAR2(255 BYTE)
147
   ) SEGMENT CREATION IMMEDIATE 
148
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
149
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
150
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
151
  TABLESPACE "RELEASEM_DATA" ;
152
--------------------------------------------------------
153
--  DDL for Table ROLES
154
--------------------------------------------------------
155
 
156
  CREATE TABLE "ACCESS_MANAGER"."ROLES" 
157
   (	"ROLE_ID" NUMBER, 
158
	"APP_ID" NUMBER, 
159
	"ROLE_NAME" VARCHAR2(1000 BYTE), 
160
	"IS_ROLE_VARIATION" CHAR(1 BYTE), 
161
	"COMMENTS" VARCHAR2(4000 BYTE)
162
   ) SEGMENT CREATION IMMEDIATE 
163
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
164
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
165
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
166
  TABLESPACE "RELEASEM_DATA" ;
167
--------------------------------------------------------
168
--  DDL for Table ROLE_PRIVILEGES
169
--------------------------------------------------------
170
 
171
  CREATE TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" 
172
   (	"ROLE_ID" NUMBER, 
173
	"OBJ_ID" NUMBER, 
174
	"PERM_ID" NUMBER, 
175
	"PERM_VALUE" CHAR(1 BYTE)
176
   ) SEGMENT CREATION IMMEDIATE 
177
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
178
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
179
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
180
  TABLESPACE "RELEASEM_DATA" ;
181
--------------------------------------------------------
182
--  DDL for Table USERS
183
--------------------------------------------------------
184
 
185
  CREATE TABLE "ACCESS_MANAGER"."USERS" 
186
   (	"USER_ID" NUMBER, 
187
	"FULL_NAME" VARCHAR2(255 BYTE), 
188
	"USER_NAME" VARCHAR2(1000 BYTE), 
189
	"USER_PASSWORD" VARCHAR2(4000 BYTE), 
190
	"USER_EMAIL" VARCHAR2(1000 BYTE), 
191
	"DOMAIN" VARCHAR2(1000 BYTE), 
192
	"IS_DISABLED" CHAR(1 BYTE), 
193
	"IS_ONLINE" CHAR(1 BYTE), 
194
	"ONLINE_AT" VARCHAR2(50 BYTE), 
195
	"LAST_VISIT" DATE, 
196
	"LAST_REQUEST" NUMBER
197
   ) SEGMENT CREATION IMMEDIATE 
198
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
199
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
200
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
201
  TABLESPACE "RELEASEM_DATA" ;
202
--------------------------------------------------------
203
--  DDL for Table USER_APPLICATIONS
204
--------------------------------------------------------
205
 
206
  CREATE TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" 
207
   (	"USER_ID" NUMBER, 
208
	"APP_ID" NUMBER, 
209
	"LAST_VISIT_STAMP" DATE
210
   ) SEGMENT CREATION IMMEDIATE 
211
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
212
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
213
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
214
  TABLESPACE "RELEASEM_DATA" ;
215
--------------------------------------------------------
216
--  DDL for Table USER_ROLES
217
--------------------------------------------------------
218
 
219
  CREATE TABLE "ACCESS_MANAGER"."USER_ROLES" 
220
   (	"USER_ID" NUMBER, 
221
	"ROLE_ID" NUMBER
222
   ) SEGMENT CREATION IMMEDIATE 
223
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
224
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
225
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
226
  TABLESPACE "RELEASEM_DATA" ;
227
--------------------------------------------------------
228
--  DDL for View CONTROLOBJECTS_VS_ROLES
229
--------------------------------------------------------
230
 
231
  CREATE OR REPLACE FORCE VIEW "ACCESS_MANAGER"."CONTROLOBJECTS_VS_ROLES" ("APPLICATION ID", "APPLICATION NAME", "OBJECT_ID", "OBJECT NAME", "OBJECT DESCRIPTION", "ROLE ID", "ROLE NAME") AS 
232
  select distinct app.app_id, app.application_name, co.obj_id, co.obj_name, co.obj_description, ro.role_id, ro.role_name
233
from applications app, control_objects co, roles ro, role_privileges rp
234
where app.app_id=co.app_id
235
and app.app_id=ro.app_id
236
and ro.role_id=rp.role_id
237
and rp.obj_id=co.obj_id
238
order by co.obj_name;
239
--------------------------------------------------------
5953 dpurdie 240
--  DDL for Index UNQ_APPLICATIONS
241
--------------------------------------------------------
242
 
243
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_APPLICATIONS" ON "ACCESS_MANAGER"."APPLICATIONS" ("APPLICATION_NAME") 
244
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
245
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
246
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
247
  TABLESPACE "RELEASEM_INDX" ;
248
--------------------------------------------------------
5297 dpurdie 249
--  DDL for Index UNQ_PERMISSION_TYPES
250
--------------------------------------------------------
251
 
252
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_PERMISSION_TYPES" ON "ACCESS_MANAGER"."PERMISSION_TYPES" ("PERM_NAME") 
253
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
254
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
255
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
256
  TABLESPACE "RELEASEM_INDX" ;
257
--------------------------------------------------------
258
--  DDL for Index PK_APPLICATION_PAGES
259
--------------------------------------------------------
260
 
261
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_APPLICATION_PAGES" ON "ACCESS_MANAGER"."APPLICATION_PAGES" ("PAGE_ID") 
262
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
263
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
264
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
265
  TABLESPACE "RELEASEM_INDX" ;
266
--------------------------------------------------------
5953 dpurdie 267
--  DDL for Index UNQ_PAGE_COBJ
268
--------------------------------------------------------
269
 
270
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_PAGE_COBJ" ON "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" ("PAGE_ID", "OBJ_ID") 
271
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
272
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
273
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
274
  TABLESPACE "RELEASEM_INDX" ;
275
--------------------------------------------------------
5297 dpurdie 276
--  DDL for Index PK_ROLES
277
--------------------------------------------------------
278
 
279
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_ROLES" ON "ACCESS_MANAGER"."ROLES" ("ROLE_ID") 
280
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
281
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
282
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
283
  TABLESPACE "RELEASEM_INDX" ;
284
--------------------------------------------------------
285
--  DDL for Index INX_ENUM_EVENT
286
--------------------------------------------------------
287
 
288
  CREATE INDEX "ACCESS_MANAGER"."INX_ENUM_EVENT" ON "ACCESS_MANAGER"."LOGIN_TRAIL" ("ENUM_EVENT") 
289
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
290
  STORAGE(INITIAL 3145728 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
291
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
292
  TABLESPACE "RELEASEM_INDX" ;
293
--------------------------------------------------------
294
--  DDL for Index UNQ_ROLES
295
--------------------------------------------------------
296
 
297
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_ROLES" ON "ACCESS_MANAGER"."ROLES" ("APP_ID", "ROLE_NAME") 
298
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
299
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
300
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
301
  TABLESPACE "RELEASEM_INDX" ;
302
--------------------------------------------------------
5953 dpurdie 303
--  DDL for Index PK_PERMISSION_TYPES
5297 dpurdie 304
--------------------------------------------------------
305
 
5953 dpurdie 306
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_PERMISSION_TYPES" ON "ACCESS_MANAGER"."PERMISSION_TYPES" ("PERM_ID") 
5297 dpurdie 307
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
308
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
309
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
310
  TABLESPACE "RELEASEM_INDX" ;
311
--------------------------------------------------------
312
--  DDL for Index UNQ_USERS
313
--------------------------------------------------------
314
 
315
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_USERS" ON "ACCESS_MANAGER"."USERS" ("USER_NAME") 
316
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
317
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
318
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
319
  TABLESPACE "RELEASEM_INDX" ;
320
--------------------------------------------------------
321
--  DDL for Index PK_USERS
322
--------------------------------------------------------
323
 
324
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_USERS" ON "ACCESS_MANAGER"."USERS" ("USER_ID") 
325
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
326
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
327
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
328
  TABLESPACE "RELEASEM_INDX" ;
329
--------------------------------------------------------
5953 dpurdie 330
--  DDL for Index INX_CLIENT_IP
5297 dpurdie 331
--------------------------------------------------------
332
 
5953 dpurdie 333
  CREATE INDEX "ACCESS_MANAGER"."INX_CLIENT_IP" ON "ACCESS_MANAGER"."LOGIN_TRAIL" ("CLIENT_IP") 
5297 dpurdie 334
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
5953 dpurdie 335
  STORAGE(INITIAL 6291456 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
5297 dpurdie 336
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
337
  TABLESPACE "RELEASEM_INDX" ;
338
--------------------------------------------------------
5953 dpurdie 339
--  DDL for Index PK_APPLICATIONS
5297 dpurdie 340
--------------------------------------------------------
341
 
5953 dpurdie 342
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_APPLICATIONS" ON "ACCESS_MANAGER"."APPLICATIONS" ("APP_ID") 
5297 dpurdie 343
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
344
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
345
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
346
  TABLESPACE "RELEASEM_INDX" ;
347
--------------------------------------------------------
348
--  DDL for Index PK_CONTROL_OBJECTS
349
--------------------------------------------------------
350
 
351
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_CONTROL_OBJECTS" ON "ACCESS_MANAGER"."CONTROL_OBJECTS" ("OBJ_ID") 
352
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
353
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
354
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
355
  TABLESPACE "RELEASEM_INDX" ;
356
--------------------------------------------------------
357
--  DDL for Index INX_USER_NAME
358
--------------------------------------------------------
359
 
360
  CREATE INDEX "ACCESS_MANAGER"."INX_USER_NAME" ON "ACCESS_MANAGER"."LOGIN_TRAIL" ("USER_NAME") 
361
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
362
  STORAGE(INITIAL 5242880 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
363
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
364
  TABLESPACE "RELEASEM_INDX" ;
365
--------------------------------------------------------
366
--  DDL for Index UNQ_USER_ROLES
367
--------------------------------------------------------
368
 
369
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_USER_ROLES" ON "ACCESS_MANAGER"."USER_ROLES" ("USER_ID", "ROLE_ID") 
370
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
371
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
372
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
373
  TABLESPACE "RELEASEM_INDX" ;
374
--------------------------------------------------------
375
--  DDL for Index UNQ_APP_PAGES
376
--------------------------------------------------------
377
 
378
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_APP_PAGES" ON "ACCESS_MANAGER"."APPLICATION_PAGES" ("APP_ID", "PAGE_NAME") 
379
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
380
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
381
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
382
  TABLESPACE "RELEASEM_INDX" ;
383
--------------------------------------------------------
384
--  DDL for Index UNQ_DATA_TABLE
385
--------------------------------------------------------
386
 
387
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_DATA_TABLE" ON "ACCESS_MANAGER"."DATA_TABLES" ("TABLE_NAME", "OBJ_ID", "REF_COLUMN_NAME") 
388
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
389
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
390
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
391
  TABLESPACE "RELEASEM_INDX" ;
392
--------------------------------------------------------
393
--  DDL for Index PK_DATA_TABLES
394
--------------------------------------------------------
395
 
396
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."PK_DATA_TABLES" ON "ACCESS_MANAGER"."DATA_TABLES" ("DT_ID") 
397
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
398
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
399
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
400
  TABLESPACE "RELEASEM_INDX" ;
401
--------------------------------------------------------
402
--  DDL for Index UNQ_USER_APPS
403
--------------------------------------------------------
404
 
405
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_USER_APPS" ON "ACCESS_MANAGER"."USER_APPLICATIONS" ("USER_ID", "APP_ID") 
406
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
407
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
408
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
409
  TABLESPACE "RELEASEM_INDX" ;
410
--------------------------------------------------------
5953 dpurdie 411
--  DDL for Index UNQ_DATA_PERM
412
--------------------------------------------------------
413
 
414
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_DATA_PERM" ON "ACCESS_MANAGER"."DATA_PERMISSIONS" ("DT_ID", "ROLE_ID", "REF_COLUMN_VAL", "PERM_ID") 
415
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
416
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
417
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
418
  TABLESPACE "RELEASEM_INDX" ;
419
--------------------------------------------------------
5297 dpurdie 420
--  DDL for Index UNQ_ROLE_OBJ_PERM
421
--------------------------------------------------------
422
 
423
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_ROLE_OBJ_PERM" ON "ACCESS_MANAGER"."ROLE_PRIVILEGES" ("ROLE_ID", "OBJ_ID", "PERM_ID") 
424
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
425
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
426
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
427
  TABLESPACE "RELEASEM_INDX" ;
428
--------------------------------------------------------
5953 dpurdie 429
--  DDL for Index UNQ_CONTROL_OBJ
430
--------------------------------------------------------
431
 
432
  CREATE UNIQUE INDEX "ACCESS_MANAGER"."UNQ_CONTROL_OBJ" ON "ACCESS_MANAGER"."CONTROL_OBJECTS" ("APP_ID", "OBJ_NAME") 
433
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
434
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
435
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
436
  TABLESPACE "RELEASEM_INDX" ;
437
--------------------------------------------------------
5297 dpurdie 438
--  Constraints for Table DATA_TABLES
439
--------------------------------------------------------
440
 
5953 dpurdie 441
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 442
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" ADD CONSTRAINT "PK_DATA_TABLES" PRIMARY KEY ("DT_ID")
443
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
444
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
445
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
446
  TABLESPACE "RELEASEM_INDX"  ENABLE;
447
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" MODIFY ("DISPLAY_COLUMN_NAME" NOT NULL ENABLE);
448
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" MODIFY ("REF_COLUMN_NAME" NOT NULL ENABLE);
449
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" MODIFY ("TABLE_NAME" NOT NULL ENABLE);
450
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" MODIFY ("OBJ_ID" NOT NULL ENABLE);
451
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" MODIFY ("DT_ID" NOT NULL ENABLE);
452
--------------------------------------------------------
453
--  Constraints for Table APPLICATIONS
454
--------------------------------------------------------
455
 
456
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" ADD CONSTRAINT "PK_APPLICATIONS" PRIMARY KEY ("APP_ID")
457
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
458
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
459
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
460
  TABLESPACE "RELEASEM_INDX"  ENABLE;
461
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" MODIFY ("IS_RUNNING" NOT NULL ENABLE);
462
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" MODIFY ("ACRONYM" NOT NULL ENABLE);
463
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" MODIFY ("APPLICATION_NAME" NOT NULL ENABLE);
464
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" MODIFY ("APP_ID" NOT NULL ENABLE);
5953 dpurdie 465
  ALTER TABLE "ACCESS_MANAGER"."APPLICATIONS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 466
--------------------------------------------------------
467
--  Constraints for Table PERMISSION_TYPES
468
--------------------------------------------------------
469
 
470
  ALTER TABLE "ACCESS_MANAGER"."PERMISSION_TYPES" ADD CONSTRAINT "PK_PERMISSION_TYPES" PRIMARY KEY ("PERM_ID")
471
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
472
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
473
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
474
  TABLESPACE "RELEASEM_INDX"  ENABLE;
475
  ALTER TABLE "ACCESS_MANAGER"."PERMISSION_TYPES" MODIFY ("PERM_NAME" NOT NULL ENABLE);
476
  ALTER TABLE "ACCESS_MANAGER"."PERMISSION_TYPES" MODIFY ("PERM_ID" NOT NULL ENABLE);
5953 dpurdie 477
  ALTER TABLE "ACCESS_MANAGER"."PERMISSION_TYPES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 478
--------------------------------------------------------
479
--  Constraints for Table USER_APPLICATIONS
480
--------------------------------------------------------
481
 
482
  ALTER TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" MODIFY ("APP_ID" NOT NULL ENABLE);
483
  ALTER TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" MODIFY ("USER_ID" NOT NULL ENABLE);
5953 dpurdie 484
  ALTER TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 485
--------------------------------------------------------
486
--  Constraints for Table USER_ROLES
487
--------------------------------------------------------
488
 
489
  ALTER TABLE "ACCESS_MANAGER"."USER_ROLES" MODIFY ("ROLE_ID" NOT NULL ENABLE);
490
  ALTER TABLE "ACCESS_MANAGER"."USER_ROLES" MODIFY ("USER_ID" NOT NULL ENABLE);
5953 dpurdie 491
  ALTER TABLE "ACCESS_MANAGER"."USER_ROLES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 492
--------------------------------------------------------
493
--  Constraints for Table APPLICATION_PAGES
494
--------------------------------------------------------
495
 
5953 dpurdie 496
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 497
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" ADD CONSTRAINT "PK_APPLICATION_PAGES" PRIMARY KEY ("PAGE_ID")
498
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
499
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
500
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
501
  TABLESPACE "RELEASEM_INDX"  ENABLE;
502
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" MODIFY ("PAGE_NAME" NOT NULL ENABLE);
503
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" MODIFY ("APP_ID" NOT NULL ENABLE);
504
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" MODIFY ("PAGE_ID" NOT NULL ENABLE);
505
--------------------------------------------------------
506
--  Constraints for Table USERS
507
--------------------------------------------------------
508
 
509
  ALTER TABLE "ACCESS_MANAGER"."USERS" ADD CONSTRAINT "PK_USERS" PRIMARY KEY ("USER_ID")
510
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
511
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
512
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
513
  TABLESPACE "RELEASEM_INDX"  ENABLE;
514
  ALTER TABLE "ACCESS_MANAGER"."USERS" MODIFY ("USER_NAME" NOT NULL ENABLE);
515
  ALTER TABLE "ACCESS_MANAGER"."USERS" MODIFY ("FULL_NAME" NOT NULL ENABLE);
516
  ALTER TABLE "ACCESS_MANAGER"."USERS" MODIFY ("USER_ID" NOT NULL ENABLE);
5953 dpurdie 517
  ALTER TABLE "ACCESS_MANAGER"."USERS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 518
--------------------------------------------------------
519
--  Constraints for Table CONTROL_OBJECTS
520
--------------------------------------------------------
521
 
5953 dpurdie 522
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 523
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" ADD CONSTRAINT "PK_CONTROL_OBJECTS" PRIMARY KEY ("OBJ_ID")
524
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
525
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
526
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
527
  TABLESPACE "RELEASEM_INDX"  ENABLE;
528
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" MODIFY ("OBJ_NAME" NOT NULL ENABLE);
529
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" MODIFY ("APP_ID" NOT NULL ENABLE);
530
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" MODIFY ("OBJ_ID" NOT NULL ENABLE);
531
--------------------------------------------------------
532
--  Constraints for Table LOGIN_TRAIL
533
--------------------------------------------------------
534
 
535
  ALTER TABLE "ACCESS_MANAGER"."LOGIN_TRAIL" MODIFY ("STAMP" NOT NULL ENABLE);
536
  ALTER TABLE "ACCESS_MANAGER"."LOGIN_TRAIL" MODIFY ("USER_NAME" NOT NULL ENABLE);
537
  ALTER TABLE "ACCESS_MANAGER"."LOGIN_TRAIL" MODIFY ("ENUM_EVENT" NOT NULL ENABLE);
5953 dpurdie 538
  ALTER TABLE "ACCESS_MANAGER"."LOGIN_TRAIL" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 539
--------------------------------------------------------
540
--  Constraints for Table ROLE_PRIVILEGES
541
--------------------------------------------------------
542
 
543
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" MODIFY ("PERM_VALUE" NOT NULL ENABLE);
544
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" MODIFY ("PERM_ID" NOT NULL ENABLE);
545
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" MODIFY ("OBJ_ID" NOT NULL ENABLE);
546
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" MODIFY ("ROLE_ID" NOT NULL ENABLE);
5953 dpurdie 547
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 548
--------------------------------------------------------
549
--  Constraints for Table PAGE_CONTROL_OBJECTS
550
--------------------------------------------------------
551
 
552
  ALTER TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" MODIFY ("OBJ_ID" NOT NULL ENABLE);
553
  ALTER TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" MODIFY ("PAGE_ID" NOT NULL ENABLE);
5953 dpurdie 554
  ALTER TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 555
--------------------------------------------------------
556
--  Constraints for Table DATA_PERMISSIONS
557
--------------------------------------------------------
558
 
5953 dpurdie 559
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 560
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" MODIFY ("PERM_VALUE" NOT NULL ENABLE);
561
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" MODIFY ("PERM_ID" NOT NULL ENABLE);
562
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" MODIFY ("REF_COLUMN_VAL" NOT NULL ENABLE);
563
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" MODIFY ("ROLE_ID" NOT NULL ENABLE);
564
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" MODIFY ("DT_ID" NOT NULL ENABLE);
565
--------------------------------------------------------
566
--  Constraints for Table ROLES
567
--------------------------------------------------------
568
 
569
  ALTER TABLE "ACCESS_MANAGER"."ROLES" ADD CONSTRAINT "PK_ROLES" PRIMARY KEY ("ROLE_ID")
570
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
571
  STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
572
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
573
  TABLESPACE "RELEASEM_INDX"  ENABLE;
574
  ALTER TABLE "ACCESS_MANAGER"."ROLES" MODIFY ("ROLE_NAME" NOT NULL ENABLE);
575
  ALTER TABLE "ACCESS_MANAGER"."ROLES" MODIFY ("APP_ID" NOT NULL ENABLE);
576
  ALTER TABLE "ACCESS_MANAGER"."ROLES" MODIFY ("ROLE_ID" NOT NULL ENABLE);
5953 dpurdie 577
  ALTER TABLE "ACCESS_MANAGER"."ROLES" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5297 dpurdie 578
--------------------------------------------------------
579
--  Ref Constraints for Table APPLICATION_PAGES
580
--------------------------------------------------------
581
 
582
  ALTER TABLE "ACCESS_MANAGER"."APPLICATION_PAGES" ADD CONSTRAINT "FK_APP_PAGE_REF_APP" FOREIGN KEY ("APP_ID")
583
	  REFERENCES "ACCESS_MANAGER"."APPLICATIONS" ("APP_ID") ENABLE;
584
--------------------------------------------------------
585
--  Ref Constraints for Table CONTROL_OBJECTS
586
--------------------------------------------------------
587
 
588
  ALTER TABLE "ACCESS_MANAGER"."CONTROL_OBJECTS" ADD CONSTRAINT "FK_CONTROL_OBJ_REF_APPLICS" FOREIGN KEY ("APP_ID")
589
	  REFERENCES "ACCESS_MANAGER"."APPLICATIONS" ("APP_ID") ENABLE;
590
--------------------------------------------------------
591
--  Ref Constraints for Table DATA_PERMISSIONS
592
--------------------------------------------------------
593
 
594
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" ADD CONSTRAINT "FK_DATA_PERM_REF_DATA_TABLE" FOREIGN KEY ("DT_ID")
595
	  REFERENCES "ACCESS_MANAGER"."DATA_TABLES" ("DT_ID") ENABLE;
596
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" ADD CONSTRAINT "FK_DATA_PERM_REF_PERM_TYPES" FOREIGN KEY ("PERM_ID")
597
	  REFERENCES "ACCESS_MANAGER"."PERMISSION_TYPES" ("PERM_ID") ENABLE;
598
  ALTER TABLE "ACCESS_MANAGER"."DATA_PERMISSIONS" ADD CONSTRAINT "FK_DATA_PER_REF_ROLES" FOREIGN KEY ("ROLE_ID")
599
	  REFERENCES "ACCESS_MANAGER"."ROLES" ("ROLE_ID") ENABLE;
600
--------------------------------------------------------
601
--  Ref Constraints for Table DATA_TABLES
602
--------------------------------------------------------
603
 
604
  ALTER TABLE "ACCESS_MANAGER"."DATA_TABLES" ADD CONSTRAINT "FK_DATA_TABLE_REF_OBJ" FOREIGN KEY ("OBJ_ID")
605
	  REFERENCES "ACCESS_MANAGER"."CONTROL_OBJECTS" ("OBJ_ID") ENABLE;
606
--------------------------------------------------------
607
--  Ref Constraints for Table PAGE_CONTROL_OBJECTS
608
--------------------------------------------------------
609
 
610
  ALTER TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" ADD CONSTRAINT "FK_PAGE_CON_REF_APP_PAGES" FOREIGN KEY ("PAGE_ID")
611
	  REFERENCES "ACCESS_MANAGER"."APPLICATION_PAGES" ("PAGE_ID") ENABLE;
612
  ALTER TABLE "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS" ADD CONSTRAINT "FK_PAGE_CON_REF_CONTROL_OBJS" FOREIGN KEY ("OBJ_ID")
613
	  REFERENCES "ACCESS_MANAGER"."CONTROL_OBJECTS" ("OBJ_ID") ENABLE;
614
--------------------------------------------------------
615
--  Ref Constraints for Table ROLES
616
--------------------------------------------------------
617
 
618
  ALTER TABLE "ACCESS_MANAGER"."ROLES" ADD CONSTRAINT "FK_ROLES_REF_APPLICS" FOREIGN KEY ("APP_ID")
619
	  REFERENCES "ACCESS_MANAGER"."APPLICATIONS" ("APP_ID") ENABLE;
620
--------------------------------------------------------
621
--  Ref Constraints for Table ROLE_PRIVILEGES
622
--------------------------------------------------------
623
 
624
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" ADD CONSTRAINT "FK_ROLE_OBJ_REF_OBJS" FOREIGN KEY ("OBJ_ID")
625
	  REFERENCES "ACCESS_MANAGER"."CONTROL_OBJECTS" ("OBJ_ID") ENABLE;
626
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" ADD CONSTRAINT "FK_ROLE_OBJ_REF_PERMISS" FOREIGN KEY ("PERM_ID")
627
	  REFERENCES "ACCESS_MANAGER"."PERMISSION_TYPES" ("PERM_ID") ENABLE;
628
  ALTER TABLE "ACCESS_MANAGER"."ROLE_PRIVILEGES" ADD CONSTRAINT "FK_ROLE_OBJ_REF_ROLES" FOREIGN KEY ("ROLE_ID")
629
	  REFERENCES "ACCESS_MANAGER"."ROLES" ("ROLE_ID") ON DELETE CASCADE ENABLE;
630
--------------------------------------------------------
631
--  Ref Constraints for Table USER_APPLICATIONS
632
--------------------------------------------------------
633
 
634
  ALTER TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" ADD CONSTRAINT "FK_USER_APPS_REF_APPS" FOREIGN KEY ("APP_ID")
635
	  REFERENCES "ACCESS_MANAGER"."APPLICATIONS" ("APP_ID") ENABLE;
636
  ALTER TABLE "ACCESS_MANAGER"."USER_APPLICATIONS" ADD CONSTRAINT "FK_USER_APP_REF_USERS" FOREIGN KEY ("USER_ID")
637
	  REFERENCES "ACCESS_MANAGER"."USERS" ("USER_ID") ENABLE;
638
--------------------------------------------------------
639
--  Ref Constraints for Table USER_ROLES
640
--------------------------------------------------------
641
 
642
  ALTER TABLE "ACCESS_MANAGER"."USER_ROLES" ADD CONSTRAINT "FK_USER_ROLES_REF_ROLES" FOREIGN KEY ("ROLE_ID")
643
	  REFERENCES "ACCESS_MANAGER"."ROLES" ("ROLE_ID") ON DELETE CASCADE ENABLE;
644
  ALTER TABLE "ACCESS_MANAGER"."USER_ROLES" ADD CONSTRAINT "FK_USER_ROLES_REF_USERS" FOREIGN KEY ("USER_ID")
645
	  REFERENCES "ACCESS_MANAGER"."USERS" ("USER_ID") ON DELETE CASCADE ENABLE;
646
--------------------------------------------------------
3927 dpurdie 647
--  DDL for Function IN_LIST_NUMBER
648
--------------------------------------------------------
649
 
5297 dpurdie 650
  CREATE OR REPLACE FUNCTION "ACCESS_MANAGER"."IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN ACCMGR_NUMBER_TAB_t IS
3927 dpurdie 651
 
652
/* ---------------------------------------------------------------------------
653
    Version: 1.0.0
654
   --------------------------------------------------------------------------- */
655
 
656
    sync_rtags		   ACCMGR_NUMBER_TAB_t := ACCMGR_NUMBER_TAB_t();
657
	pos				   NUMBER;
658
	in_list			   VARCHAR2(4000) := sInList || ',';
659
 
660
BEGIN
661
 
662
	IF NOT sInList IS NULL
663
	THEN
664
		LOOP
665
	        EXIT WHEN in_list IS NULL;
666
	        pos := INSTR ( in_list, ',' );
667
	        sync_rtags.extend;
668
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
669
	        in_list := SUBSTR ( in_list, pos+1 );
670
		END LOOP;
671
	END IF;
672
 
673
	RETURN sync_rtags;
674
END IN_LIST_NUMBER;
675
 
676
/
677
--------------------------------------------------------
678
--  DDL for Function IS_SAME_STRING
679
--------------------------------------------------------
680
 
5297 dpurdie 681
  CREATE OR REPLACE FUNCTION "ACCESS_MANAGER"."IS_SAME_STRING" ( sStringOne IN VARCHAR2,
3927 dpurdie 682
	   	  		  		   				  	sStringTwo IN VARCHAR2 ) RETURN BOOLEAN IS
683
 
684
/* ---------------------------------------------------------------------------
685
    Version: 1.0.0
686
   --------------------------------------------------------------------------- */
687
 
688
ReturnValue BOOLEAN DEFAULT FALSE;
689
 
690
BEGIN
691
 
692
	--- Compare ---
693
	IF ( NVL( sStringOne, '' ) || 'APPEND' = NVL( sStringTwo, '' ) || 'APPEND' ) THEN
694
	   -- Strings are the same
695
	   ReturnValue := TRUE;
696
 
697
	END IF; 
698
 
699
	RETURN ReturnValue;
700
END IS_SAME_STRING;
701
 
702
/
703
--------------------------------------------------------
704
--  DDL for Package PK_AMUTILS
705
--------------------------------------------------------
706
 
5297 dpurdie 707
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_AMUTILS" IS
3927 dpurdie 708
 
709
	PROCEDURE Log_Access ( nEvent IN LOGIN_TRAIL.ENUM_EVENT%TYPE,
710
			  			   sUserName IN LOGIN_TRAIL.USER_NAME%TYPE,
711
						   sClientIp IN LOGIN_TRAIL.CLIENT_IP%TYPE,
712
						   nAppId IN LOGIN_TRAIL.APP_ID%TYPE,
713
						   sComments IN LOGIN_TRAIL.COMMENTS%TYPE,
714
						   nUserId IN NUMBER DEFAULT NULL );		
715
 
716
	FUNCTION Get_Hash ( sText IN VARCHAR2 ) RETURN VARCHAR2;					   			  						  				  				 
717
 
718
END pk_AMUtils;
719
 
720
/
721
--------------------------------------------------------
722
--  DDL for Package PK_APPLICATION
723
--------------------------------------------------------
724
 
5297 dpurdie 725
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_APPLICATION" IS
3927 dpurdie 726
 
727
PROCEDURE Add_Application ( sAppName IN APPLICATIONS.APPLICATION_NAME%TYPE,
728
		  				  	sAppAcronym IN APPLICATIONS.ACRONYM%TYPE );
729
 
730
PROCEDURE Remove_Application ( nAppId IN APPLICATIONS.APP_ID%TYPE );							
731
 
732
 
733
END pk_Application;
734
 
735
/
736
--------------------------------------------------------
737
--  DDL for Package PK_CONTROL
738
--------------------------------------------------------
739
 
5297 dpurdie 740
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_CONTROL" IS
3927 dpurdie 741
 
742
 
743
PROCEDURE Add_Control ( sObjName IN CONTROL_OBJECTS.OBJ_NAME%TYPE,
744
		  		   	  	sObjDescription IN CONTROL_OBJECTS.OBJ_DESCRIPTION%TYPE,
745
					 	nAppId IN CONTROL_OBJECTS.APP_ID%TYPE
746
		  		   	 	); 
5297 dpurdie 747
 
748
PROCEDURE Update_Control ( sObjId IN VARCHAR2,
749
                sObjName IN CONTROL_OBJECTS.OBJ_NAME%TYPE,
750
                sObjDescription IN CONTROL_OBJECTS.OBJ_DESCRIPTION%TYPE
751
              );
3927 dpurdie 752
 
753
PROCEDURE Remove_Control ( sObjIdList IN VARCHAR2 );	
754
 
755
 
756
PROCEDURE Set_Row_Permissions ( nDtId IN DATA_PERMISSIONS.DT_ID%TYPE,
757
							  	nRoleId IN DATA_PERMISSIONS.ROLE_ID%TYPE,
758
							 	nRefCol IN DATA_PERMISSIONS.REF_COLUMN_VAL%TYPE,
759
						     	cIsVisible IN DATA_PERMISSIONS.PERM_VALUE%TYPE DEFAULT NULL,
760
						     	cIsActive IN DATA_PERMISSIONS.PERM_VALUE%TYPE  DEFAULT NULL );
761
 
762
 
763
PROCEDURE Delete_Data_Permission ( nDtId IN DATA_PERMISSIONS.DT_ID%TYPE,
764
								   nRoleId IN DATA_PERMISSIONS.ROLE_ID%TYPE,
765
								   nRefCol IN DATA_PERMISSIONS.REF_COLUMN_VAL%TYPE );
766
 
767
PROCEDURE Add_DataTable ( nObjId IN DATA_TABLES.OBJ_ID%TYPE,
768
						  sTableName IN DATA_TABLES.TABLE_NAME%TYPE,
769
						  sRefColumn IN DATA_TABLES.REF_COLUMN_NAME%TYPE,
770
						  sDisplayColumn IN DATA_TABLES.DISPLAY_COLUMN_NAME%TYPE
771
		  		   	 	);								   
772
 
773
PROCEDURE Remove_DataTable ( DtId IN NUMBER );								   
774
 
775
 
776
 
777
END pk_Control;
778
 
779
/
780
--------------------------------------------------------
781
--  DDL for Package PK_ROLE
782
--------------------------------------------------------
783
 
5297 dpurdie 784
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_ROLE" IS
3927 dpurdie 785
 
786
 
787
PROCEDURE Add_Role ( sRoleName IN ROLES.ROLE_NAME%TYPE,
788
		  		   	 sRoleComments IN ROLES.COMMENTS%TYPE,
789
				   	 nAppId IN ROLES.APP_ID%TYPE  );  
790
 
791
PROCEDURE Remove_Role ( sRoleIdList IN VARCHAR2 );					 
792
 
793
PROCEDURE Set_Role_Permissions ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
794
		  					   	 nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
795
							   	 cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE DEFAULT NULL,
796
							   	 cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE  DEFAULT NULL );
797
 
798
PROCEDURE Set_Role_Variation_Permissions ( nUserId IN USER_ROLES.USER_ID%TYPE,
799
		  								   nAppId IN ROLES.APP_ID%TYPE,
800
										   nRoleId IN ROLES.ROLE_ID%TYPE,
801
		  								   nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
802
									   	   cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE DEFAULT NULL,
803
									   	   cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE  DEFAULT NULL );
804
 
805
FUNCTION Is_Permissions_Changed ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
806
  								  nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
807
							   	  cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE,
808
							   	  cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE ) RETURN BOOLEAN;	
809
 
810
FUNCTION Is_Role_Variation ( nRoleId IN ROLES.ROLE_ID%TYPE ) RETURN BOOLEAN;								  									   								 
811
 
812
PROCEDURE Delete_Role_Permission ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
813
		  						  nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
814
								  nPermId IN ROLE_PRIVILEGES.PERM_ID%TYPE );	
815
 
816
PROCEDURE Grant_Role ( sRoleIdList IN VARCHAR2,
817
		  			   nUserId IN USER_ROLES.USER_ID%TYPE );
818
 
819
PROCEDURE Revoke_Role ( sRoleIdList IN VARCHAR2,
820
		  			    nUserId IN USER_ROLES.USER_ID%TYPE );					   								  				  
821
 
822
 
5297 dpurdie 823
  PROCEDURE Update_Role ( nRoleId IN ROLES.ROLE_ID%TYPE,
824
                sRoleName IN ROLES.ROLE_NAME%TYPE,
825
                sRoleComments IN ROLES.COMMENTS%TYPE
826
              );
827
 
3927 dpurdie 828
END pk_Role;
829
 
830
/
831
--------------------------------------------------------
832
--  DDL for Package PK_SECURITY
833
--------------------------------------------------------
834
 
5297 dpurdie 835
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_SECURITY" IS      
3927 dpurdie 836
 
837
/*
838
------------------------------
839
||  Last Modified:  S.Vukovic
840
||  Modified Date:  28/Apr/2005  
841
||  Spec Version:   1.0
842
------------------------------
843
*/
844
 
845
	TYPE typeCur IS REF CURSOR;  
846
 
847
    /*================================================================================================*/
848
    --FUNCTION GET_USER_BY_ID ( ID IN NUMBER, records OUT typeCur ) RETURN NUMBER;
849
    --FUNCTION GET_USER_BY_USERNAME ( UserName IN VARCHAR2, records OUT typeCur ) RETURN NUMBER;   
850
    --FUNCTION GET_USER_PERMISSIONS ( UserSK IN NUMBER, ActionNameFilter IN VARCHAR2, records OUT typeCur ) RETURN NUMBER;   
851
    --FUNCTION AUTHENTICATE ( UserName IN VARCHAR2,
852
    --                        UserPassword IN VARCHAR2,
853
    --                       records OUT typeCur ) RETURN NUMBER;
854
    /*================================================================================================*/
855
	PROCEDURE GET_USER_STATIC_PERMISSIONS ( UsedId IN NUMBER, AppId IN NUMBER, RecordSet OUT typeCur);
856
	PROCEDURE GET_USER_DATA_PERMISSIONS ( UsedId IN NUMBER, AppId IN NUMBER, RecordSet OUT typeCur);
857
	FUNCTION IS_LOCAL_PASSWORD_CORRECT ( UserName IN VARCHAR2, UserPassword IN VARCHAR2 ) RETURN NUMBER;
858
	FUNCTION Set_Password ( sUserName IN VARCHAR2, sPasswordA IN VARCHAR2, sPasswordB IN VARCHAR2 ) RETURN NUMBER;
859
	/*================================================================================================*/
860
 
861
END PK_SECURITY;
862
 
863
/
864
--------------------------------------------------------
865
--  DDL for Package PK_USER
866
--------------------------------------------------------
867
 
5297 dpurdie 868
  CREATE OR REPLACE PACKAGE "ACCESS_MANAGER"."PK_USER" IS
3927 dpurdie 869
/*
870
------------------------------
871
||  Last Modified:  J.Tweddle
872
||  Modified Date:  21/Jan/2008
873
||  Spec Version:   2.1
874
------------------------------
875
*/
876
 
877
PROCEDURE Add_User_Account ( sFullName IN USERS.FULL_NAME%TYPE,
878
		  		   	 	   	 sUserName IN USERS.USER_NAME%TYPE,
879
							 sUserEmail IN USERS.USER_EMAIL%TYPE,
880
							 sDomain IN USERS.DOMAIN%TYPE   );
881
 
882
PROCEDURE Update_User_Account ( sUserId IN VARCHAR2, sFullName IN USERS.FULL_NAME%TYPE,
883
		  		   	 	   	 sUserName IN USERS.USER_NAME%TYPE,
884
							 sUserEmail IN USERS.USER_EMAIL%TYPE,
885
							 sDomain IN USERS.DOMAIN%TYPE   );
886
 
887
PROCEDURE Add_Application_User ( sUserIdList IN VARCHAR2,
888
		  					   	 nAppId IN USER_APPLICATIONS.APP_ID%TYPE,
889
								 cIncludeEveryone IN CHAR );
890
 
891
PROCEDURE Remove_Application_User ( sUserIdList IN VARCHAR2,
892
		  					   	  	nAppId IN USER_APPLICATIONS.APP_ID%TYPE,
893
									cIncludeEveryone IN CHAR DEFAULT NULL );	
894
 
895
PROCEDURE Add_Role_Member ( sUserIdList IN VARCHAR2,
896
		  					nRoleId IN USER_ROLES.ROLE_ID%TYPE,
897
							cIncludeEveryone IN CHAR );
898
 
899
PROCEDURE Remove_Role_Member ( sUserIdList IN VARCHAR2,
900
		  					   nRoleId IN USER_ROLES.ROLE_ID%TYPE,
901
							   cIncludeEveryone IN CHAR DEFAULT NULL);									
902
 
903
PROCEDURE Disable_Users ( sUserIdList IN VARCHAR2,
904
 					   	  nAppId IN USER_APPLICATIONS.APP_ID%TYPE );	
905
 
906
PROCEDURE Remove_User_Account ( sUserIdList IN VARCHAR2 );
907
 
908
END pk_user;
909
 
910
/
911
--------------------------------------------------------
912
--  DDL for Package Body PK_AMUTILS
913
--------------------------------------------------------
914
 
5297 dpurdie 915
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_AMUTILS" 
3927 dpurdie 916
IS
917
/* ---------------------------------------------------------------------------
918
    Version: 1.0.0
919
   --------------------------------------------------------------------------- */
920
 
921
/*--------------------------------------------------------------------------------------------------*/
922
PROCEDURE Log_Access ( nEvent IN LOGIN_TRAIL.ENUM_EVENT%TYPE,
923
		  			   sUserName IN LOGIN_TRAIL.USER_NAME%TYPE,
924
					   sClientIp IN LOGIN_TRAIL.CLIENT_IP%TYPE,
925
					   nAppId IN LOGIN_TRAIL.APP_ID%TYPE,
926
					   sComments IN LOGIN_TRAIL.COMMENTS%TYPE,
927
					   nUserId IN NUMBER DEFAULT NULL ) IS
928
 
929
UserName USERS.USER_NAME%TYPE; 						 
930
 
931
BEGIN
932
	/*--------------- Business Rules Here -------------------*/
933
	IF nUserId IS NOT NULL THEN
934
	   SELECT USER_NAME  INTO  UserName  FROM USERS  WHERE USER_ID = nUserId;
935
	ELSE
936
	   UserName := sUserName;
937
	END IF;
938
	/*-------------------------------------------------------*/
939
 
940
 
941
	-- Insert Login Trail
942
	INSERT INTO LOGIN_TRAIL ( ENUM_EVENT, USER_NAME, CLIENT_IP, APP_ID, STAMP, COMMENTS ) 
943
	VALUES ( nEvent,
944
		   	 UserName,
945
			 sClientIp, 
946
			 nAppId,
947
			 TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' ),
948
			 sComments
949
	   	    );
950
 
951
END	Log_Access;
952
/*--------------------------------------------------------------------------------------------------*/
953
FUNCTION Get_Hash ( sText IN VARCHAR2 ) RETURN VARCHAR2 IS
954
 
955
 
956
BEGIN
957
	/*--------------- Business Rules Here -------------------*/
958
	/*-------------------------------------------------------*/
959
 
960
	RETURN DBMS_OBFUSCATION_TOOLKIT.MD5( input_string => sText );
961
 
962
END	Get_Hash;
963
/*--------------------------------------------------------------------------------------------------*/
964
 
965
 
966
END pk_AMUtils;
967
 
968
/
969
--------------------------------------------------------
970
--  DDL for Package Body PK_APPLICATION
971
--------------------------------------------------------
972
 
5297 dpurdie 973
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_APPLICATION" 
3927 dpurdie 974
IS
975
/* ---------------------------------------------------------------------------
976
    Version: 1.0.0
977
   --------------------------------------------------------------------------- */
978
 
979
/*--------------------------------------------------------------------------------------------------*/
980
PROCEDURE Add_Application ( sAppName IN APPLICATIONS.APPLICATION_NAME%TYPE,
981
		  				  	sAppAcronym IN APPLICATIONS.ACRONYM%TYPE ) IS
982
 
983
AppId NUMBER;
984
 
985
CURSOR curAppAcronym IS 
986
		SELECT app.ACRONYM
987
		  FROM APPLICATIONS app
988
		 WHERE app.ACRONYM = sAppAcronym;
989
recAppAcronym curAppAcronym%ROWTYPE;
990
 
991
 
992
BEGIN
993
	/*--------------- Business Rules Here -------------------*/
994
 
995
	-- Check for duplicate acronyms
996
	OPEN curAppAcronym;
997
	FETCH curAppAcronym INTO recAppAcronym;
998
 
999
	IF curAppAcronym%FOUND
1000
	THEN
1001
		RAISE_APPLICATION_ERROR (-20000, 'Application Acronym <b>'|| sAppAcronym ||'</b> is already used.' );
1002
 
1003
	END IF;
1004
 
1005
	CLOSE curAppAcronym;
1006
 
1007
	/*-------------------------------------------------------*/
1008
 
1009
	/*+++++ INSERT APPLICATION ++++++++*/
1010
	BEGIN
1011
		-- Get app_id
1012
		SELECT SEQ_APP_ID.NEXTVAL INTO AppId FROM DUAL;
1013
 
1014
		-- Insert new Application
1015
		INSERT INTO APPLICATIONS ( APP_ID, APPLICATION_NAME, ACRONYM ) 
1016
		VALUES ( AppId, sAppName, sAppAcronym );
1017
 
1018
 
1019
	EXCEPTION
1020
    WHEN DUP_VAL_ON_INDEX
1021
	THEN		
1022
		RAISE_APPLICATION_ERROR (-20000, 'Application Name <b>'|| sAppName ||'</b> is already used.');
1023
	END;
1024
	/*+++++ END INSERT APPLICATION +++++*/
1025
 
1026
 
1027
END	Add_Application;
1028
/*--------------------------------------------------------------------------------------------------*/
1029
PROCEDURE Remove_Application ( nAppId IN APPLICATIONS.APP_ID%TYPE ) IS
1030
 
1031
rowCount NUMBER DEFAULT 0;
1032
 
1033
BEGIN
1034
	/*--------------- Business Rules Here -------------------*/
1035
 
1036
	-- Check if any Users are using this Application
1037
	SELECT Count(*) INTO rowCount
1038
	  FROM USER_APPLICATIONS ua
1039
	 WHERE ua.APP_ID = nAppId;
1040
 
1041
	IF rowCount > 0 THEN
1042
	   RAISE_APPLICATION_ERROR (-20000, 'Some Users are still assigned to this Application ( Counted '|| rowCount ||' ).' );
1043
	END IF; 
1044
 
1045
	-- Check if any Roles are using this Application
1046
	SELECT Count(*) INTO rowCount
1047
  	  FROM ROLES ro 
1048
	 WHERE ro.APP_ID = nAppId;
1049
 
1050
	IF rowCount > 0 THEN
1051
	   RAISE_APPLICATION_ERROR (-20000, 'Some Roles are still assigned to this Application ( Counted '|| rowCount ||' ).' );
1052
	END IF;
1053
 
1054
	/*-------------------------------------------------------*/
1055
 
1056
 
1057
	-- Remove Application --
1058
	DELETE 
1059
	  FROM APPLICATIONS
1060
	 WHERE APP_ID = nAppId;
1061
 
1062
 
1063
END	Remove_Application;
1064
/*--------------------------------------------------------------------------------------------------*/
1065
 
1066
 
1067
END pk_Application;
1068
 
1069
/
1070
--------------------------------------------------------
1071
--  DDL for Package Body PK_CONTROL
1072
--------------------------------------------------------
1073
 
5297 dpurdie 1074
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_CONTROL" 
3927 dpurdie 1075
IS
1076
/* ---------------------------------------------------------------------------
1077
    Version: 1.0.0
1078
   --------------------------------------------------------------------------- */
1079
 
1080
/*--------------------------------------------------------------------------------------------------*/
1081
PROCEDURE Add_Control ( sObjName IN CONTROL_OBJECTS.OBJ_NAME%TYPE,
1082
		  		   	  	sObjDescription IN CONTROL_OBJECTS.OBJ_DESCRIPTION%TYPE,
1083
					 	nAppId IN CONTROL_OBJECTS.APP_ID%TYPE
1084
		  		   	 	) IS
1085
 
1086
ObjID NUMBER;
1087
 
1088
CURSOR curPermissionTypes IS 
1089
		SELECT pt.PERM_ID
1090
  		  FROM PERMISSION_TYPES pt;
1091
recPermissionTypes curPermissionTypes%ROWTYPE;
1092
 
1093
 
1094
BEGIN
1095
	/*--------------- Business Rules Here -------------------*/
1096
	/*-------------------------------------------------------*/
1097
 
1098
	-- Get obj_id
1099
	SELECT SEQ_OBJ_ID.NEXTVAL INTO ObjID FROM DUAL;
1100
 
1101
	-- Insert new Control Object
1102
	INSERT INTO CONTROL_OBJECTS ( OBJ_ID, APP_ID, OBJ_NAME, PARENT_OBJ_ID, OBJ_DESCRIPTION ) 
1103
	VALUES ( ObjID, nAppId, sObjName, NULL, sObjDescription );
1104
 
1105
 
1106
 
1107
 
1108
	/* Set default permissions to all roles */
1109
 
1110
	/*
1111
	OPEN curPermissionTypes;
1112
	FETCH curPermissionTypes INTO recPermissionTypes;
1113
 
1114
	WHILE curPermissionTypes%FOUND
1115
	LOOP
1116
		INSERT INTO ROLE_PRIVILEGES ( ROLE_ID, OBJ_ID, PERM_ID, PERM_VALUE )
1117
		SELECT ROLE_ID, 
1118
			   ObjID AS OBJ_ID, 
1119
			   recPermissionTypes.PERM_ID AS PERM_ID, 
1120
			   'Y' AS PERM_VALUE
1121
		  FROM ROLES
1122
		 WHERE IS_ROLE_VARIATION != 'Y';
1123
 
1124
 
1125
		FETCH curPermissionTypes INTO recPermissionTypes;
1126
	END LOOP;
1127
	CLOSE curPermissionTypes;
1128
	*/
1129
 
1130
	EXCEPTION
1131
    WHEN DUP_VAL_ON_INDEX
1132
	THEN		
1133
		RAISE_APPLICATION_ERROR (-20000, 'Control Name '|| sObjName ||' is already used in this Application.');
1134
 
1135
 
1136
END	Add_Control;
5297 dpurdie 1137
 
3927 dpurdie 1138
/*--------------------------------------------------------------------------------------------------*/
5297 dpurdie 1139
PROCEDURE Update_Control ( sObjId IN VARCHAR2,
1140
                sObjName IN CONTROL_OBJECTS.OBJ_NAME%TYPE,
1141
                sObjDescription IN CONTROL_OBJECTS.OBJ_DESCRIPTION%TYPE
1142
              ) IS
1143
BEGIN
1144
	/*--------------- Business Rules Here -------------------*/
1145
	IF (sObjId IS NULL) THEN
1146
	   RAISE_APPLICATION_ERROR (-20000, 'Please select a Control.' );
1147
	END IF;
1148
	/*-------------------------------------------------------*/
1149
 
1150
        -- Update CONTROL
1151
	UPDATE CONTROL_OBJECTS SET
1152
	OBJ_NAME = sObjName, OBJ_DESCRIPTION = sObjDescription
1153
	WHERE OBJ_ID = sObjId;
1154
 
1155
END     Update_Control;              
1156
 
1157
/*--------------------------------------------------------------------------------------------------*/
3927 dpurdie 1158
PROCEDURE Remove_Control ( sObjIdList IN VARCHAR2 ) IS
1159
 
1160
rowCount NUMBER DEFAULT 0;
1161
 
1162
BEGIN
1163
	/*--------------- Business Rules Here -------------------*/
1164
 
1165
	-- Check if any Pages use this control
1166
	SELECT Count(*) INTO rowCount
1167
	  FROM PAGE_CONTROL_OBJECTS pco
1168
	 WHERE pco.OBJ_ID IN  (
1169
						   SELECT *
1170
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sObjIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
1171
	   	   			   	   );
1172
 
1173
	IF rowCount > 0 THEN
1174
	   RAISE_APPLICATION_ERROR (-20000, 'Some Pages are still using this Control ( Counted '|| rowCount ||' ).' );
1175
	END IF; 
1176
 
1177
 
1178
	-- Check if any Roles use this control
1179
	SELECT Count(*) INTO rowCount
1180
  	  FROM ROLE_PRIVILEGES rp 
1181
	 WHERE rp.OBJ_ID IN (
1182
						   SELECT *
1183
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sObjIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
1184
	   	   			   	   );
1185
 
1186
	IF rowCount > 0 THEN
1187
	   RAISE_APPLICATION_ERROR (-20000, 'Some Roles are still using this Control ( Counted '|| rowCount ||' ).' );
1188
	END IF;
1189
 
1190
 
1191
	-- Check if any Data tables use this control
1192
	SELECT Count(*) INTO rowCount
1193
	  FROM DATA_TABLES dt,
1194
	  	   DATA_PERMISSIONS dp 
1195
	 WHERE dt.OBJ_ID IN   (
1196
						   SELECT *
1197
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sObjIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
1198
	   	   			   	   )
1199
	   AND dt.DT_ID = dp.DT_ID;
1200
 
1201
	IF rowCount > 0 THEN
1202
	   RAISE_APPLICATION_ERROR (-20000, 'Some Data Filters are still in use by Roles ( Counted '|| rowCount ||' ).' );
1203
	END IF;
1204
 
1205
	/*-------------------------------------------------------*/
1206
 
1207
 
1208
	-- Remove Data Filter --
1209
	DELETE 
1210
	  FROM DATA_TABLES dt
1211
	 WHERE dt.OBJ_ID IN   (
1212
						   SELECT *
1213
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sObjIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
1214
	   	   			   	   );
1215
 
1216
	-- Remove Control -- 
1217
	DELETE 
1218
	  FROM CONTROL_OBJECTS co
1219
	 WHERE co.OBJ_ID IN   (
1220
						   SELECT *
1221
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sObjIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
1222
	   	   			   	   );
1223
 
1224
 
1225
END	Remove_Control;
1226
/*--------------------------------------------------------------------------------------------------*/
1227
PROCEDURE Add_DataTable ( nObjId IN DATA_TABLES.OBJ_ID%TYPE,
1228
						  sTableName IN DATA_TABLES.TABLE_NAME%TYPE,
1229
						  sRefColumn IN DATA_TABLES.REF_COLUMN_NAME%TYPE,
1230
						  sDisplayColumn IN DATA_TABLES.DISPLAY_COLUMN_NAME%TYPE
1231
		  		   	 	) IS
1232
 
1233
DtID NUMBER;
1234
 
1235
 
1236
BEGIN
1237
	/*--------------- Business Rules Here -------------------*/
1238
	/*-------------------------------------------------------*/
1239
 
1240
	-- Get dt_id
1241
	SELECT SEQ_DT_ID.NEXTVAL INTO DtID FROM DUAL;
1242
 
1243
	-- Insert new Control Object
1244
	INSERT INTO DATA_TABLES ( DT_ID, OBJ_ID, TABLE_NAME, REF_COLUMN_NAME, DISPLAY_COLUMN_NAME )
1245
	VALUES ( DtID, nObjId, sTableName, sRefColumn, sDisplayColumn );
1246
 
1247
 
1248
	EXCEPTION
1249
    WHEN DUP_VAL_ON_INDEX
1250
	THEN		
1251
		RAISE_APPLICATION_ERROR (-20000, 'This Data Table Reference is already used in this Action object.');
1252
 
1253
 
1254
END	Add_DataTable;
1255
/*--------------------------------------------------------------------------------------------------*/
1256
PROCEDURE Remove_DataTable ( DtId IN NUMBER ) IS
1257
 
1258
 
1259
BEGIN
1260
	/*--------------- Business Rules Here -------------------*/
1261
 
1262
	/*-------------------------------------------------------*/
1263
 
1264
 
1265
	-- Remove Data Permissions --
1266
	DELETE 
1267
	  FROM DATA_PERMISSIONS dp
1268
	 WHERE dp.DT_ID = DtId;
1269
 
1270
	-- Remove Data Table -- 
1271
	DELETE 
1272
	  FROM DATA_TABLES dt
1273
	 WHERE dt.DT_ID = DtId;
1274
 
1275
 
1276
END	Remove_DataTable;
1277
/*--------------------------------------------------------------------------------------------------*/
1278
PROCEDURE Set_Row_Permissions ( nDtId IN DATA_PERMISSIONS.DT_ID%TYPE,
1279
							  	nRoleId IN DATA_PERMISSIONS.ROLE_ID%TYPE,
1280
							 	nRefCol IN DATA_PERMISSIONS.REF_COLUMN_VAL%TYPE,
1281
						     	cIsVisible IN DATA_PERMISSIONS.PERM_VALUE%TYPE DEFAULT NULL,
1282
						     	cIsActive IN DATA_PERMISSIONS.PERM_VALUE%TYPE  DEFAULT NULL ) IS
1283
 
1284
nPermId PERMISSION_TYPES.PERM_ID%TYPE DEFAULT 0;
1285
 
1286
BEGIN
1287
	/*--------------- Business Rules Here -------------------*/
1288
	/*-------------------------------------------------------*/
1289
 
1290
	-- Delete Existing Permission --
1291
	Delete_Data_Permission ( nDtId, nRoleId, nRefCol );
1292
 
1293
 
1294
	----- Set Data Permission -----
1295
 
1296
	-- Get PermId for "Visible"
1297
	SELECT pt.PERM_ID INTO nPermId FROM PERMISSION_TYPES pt WHERE pt.PERM_NAME = 'enumVISIBLE';
1298
 
1299
 
1300
 
1301
	IF (cIsVisible IS NOT NULL) THEN
1302
 
1303
	   INSERT INTO DATA_PERMISSIONS ( DT_ID, ROLE_ID, REF_COLUMN_VAL, PERM_ID, PERM_VALUE )
1304
	   VALUES ( nDtId, nRoleId, nRefCol, nPermId, cIsVisible );
1305
 
1306
	END IF;
1307
 
1308
 
1309
 
1310
	-- Get PermId for "Active"
1311
	SELECT pt.PERM_ID INTO nPermId FROM PERMISSION_TYPES pt WHERE pt.PERM_NAME = 'enumACTIVE';
1312
 
1313
 
1314
 
1315
	IF (cIsActive IS NOT NULL) THEN
1316
 
1317
	   INSERT INTO DATA_PERMISSIONS ( DT_ID, ROLE_ID, REF_COLUMN_VAL, PERM_ID, PERM_VALUE )
1318
	   VALUES ( nDtId, nRoleId, nRefCol, nPermId, cIsActive );
1319
 
1320
	END IF;
1321
 
1322
 
1323
 
1324
END	Set_Row_Permissions;
1325
/*--------------------------------------------------------------------------------------------------*/
1326
PROCEDURE Delete_Data_Permission ( nDtId IN DATA_PERMISSIONS.DT_ID%TYPE,
1327
								   nRoleId IN DATA_PERMISSIONS.ROLE_ID%TYPE,
1328
								   nRefCol IN DATA_PERMISSIONS.REF_COLUMN_VAL%TYPE ) IS
1329
 
1330
 
1331
BEGIN
1332
	/*--------------- Business Rules Here -------------------*/
1333
	IF (nDtId IS NULL) OR (nRoleId IS NULL) OR (nRefCol IS NULL)
1334
	THEN
1335
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nDtId= '|| nDtId ||', nRoleId='|| nRoleId ||', nRefCol='|| nRefCol );
1336
 
1337
	END IF;
1338
	/*-------------------------------------------------------*/
1339
 
1340
	DELETE
1341
	  FROM DATA_PERMISSIONS dp
1342
	 WHERE dp.ROLE_ID = nRoleId
1343
	   AND dp.DT_ID = nDtId
1344
	   AND dp.REF_COLUMN_VAL = nRefCol;
1345
 
1346
 
1347
END	Delete_Data_Permission;
1348
/*--------------------------------------------------------------------------------------------------*/
1349
 
1350
 
1351
END pk_Control;
1352
 
1353
/
1354
--------------------------------------------------------
1355
--  DDL for Package Body PK_ROLE
1356
--------------------------------------------------------
1357
 
5297 dpurdie 1358
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_ROLE" 
3927 dpurdie 1359
         IS
1360
 
1361
         /*--------------------------------------------------------------------------------------------------*/
1362
         PROCEDURE Add_Role ( sRoleName IN ROLES.ROLE_NAME%TYPE,
1363
                              sRoleComments IN ROLES.COMMENTS%TYPE,
1364
                              nAppId IN ROLES.APP_ID%TYPE  ) IS
1365
 
1366
         RoleID NUMBER;
1367
 
1368
         BEGIN
1369
            /*--------------- Business Rules Here -------------------*/
1370
            /*-------------------------------------------------------*/
1371
 
1372
 
1373
            -- Get role_id
1374
            SELECT SEQ_ROLE_ID.NEXTVAL INTO RoleID FROM DUAL;
1375
 
1376
            -- Insert new Role
1377
            INSERT INTO ROLES ( ROLE_ID, APP_ID, ROLE_NAME, IS_ROLE_VARIATION, COMMENTS )
1378
            VALUES ( RoleID, nAppId, sRoleName, NULL, sRoleComments );
1379
 
1380
 
1381
            EXCEPTION
1382
            WHEN DUP_VAL_ON_INDEX
1383
            THEN
1384
               RAISE_APPLICATION_ERROR (-20000, 'Role Name '|| sRoleName ||' is already used in this Application.');
1385
 
1386
         END   Add_Role;
5297 dpurdie 1387
 
3927 dpurdie 1388
         /*--------------------------------------------------------------------------------------------------*/
5297 dpurdie 1389
         PROCEDURE Update_Role ( nRoleId IN ROLES.ROLE_ID%TYPE,
1390
                sRoleName IN ROLES.ROLE_NAME%TYPE,
1391
                sRoleComments IN ROLES.COMMENTS%TYPE
1392
              ) IS
1393
          BEGIN
1394
          /*--------------- Business Rules Here -------------------*/
1395
          IF (nRoleId IS NULL) THEN
1396
             RAISE_APPLICATION_ERROR (-20000, 'Please select a Role.' );
1397
          END IF;
1398
          /*-------------------------------------------------------*/
1399
 
1400
                -- Update ROLE
1401
          UPDATE ROLES SET
1402
          ROLE_NAME = sRoleName, ROLES.COMMENTS = sRoleComments
1403
          WHERE ROLE_ID = nRoleId;    
1404
 
1405
          END   Update_Role;    
1406
 
1407
         /*--------------------------------------------------------------------------------------------------*/
3927 dpurdie 1408
         PROCEDURE Remove_Role ( sRoleIdList IN VARCHAR2 ) IS
1409
 
1410
         rowCount NUMBER DEFAULT 0;
1411
 
1412
         BEGIN
1413
            /*--------------- Business Rules Here -------------------*/
1414
 
1415
            -- Check if any Users user this role
1416
            SELECT Count(*) INTO rowCount
1417
            FROM USER_ROLES ur
1418
            WHERE ur.ROLE_ID IN  (SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) );
1419
 
1420
            IF rowCount > 0 THEN
1421
               RAISE_APPLICATION_ERROR (-20000, 'Some Users are still using this Role ( Counted '|| rowCount ||' ).' );
1422
            END IF;
1423
 
1424
            /*-------------------------------------------------------*/
1425
 
1426
            -- Remove Role Privileges --
1427
            DELETE
1428
            FROM ROLE_PRIVILEGES rp
1429
            WHERE rp.ROLE_ID IN  ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) );
1430
 
1431
            -- Remove Role Data Permissions --
1432
            DELETE
1433
            FROM DATA_PERMISSIONS dp
1434
            WHERE dp.ROLE_ID IN  ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) );
1435
 
1436
            -- Remove Role --
1437
            DELETE
1438
            FROM ROLES ro
1439
            WHERE ro.ROLE_ID IN  ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) );
1440
 
1441
 
1442
         END   Remove_Role;
1443
         /*--------------------------------------------------------------------------------------------------*/
1444
         PROCEDURE Set_Role_Permissions ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
1445
                                          nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
1446
                                          cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE DEFAULT NULL,
1447
                                          cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE  DEFAULT NULL ) IS
1448
 
1449
         nPermId PERMISSION_TYPES.PERM_ID%TYPE DEFAULT 0;
1450
 
1451
         BEGIN
1452
            /*--------------- Business Rules Here -------------------*/
1453
            IF (nRoleId IS NULL) OR (nObjId IS NULL)
1454
            THEN
1455
               RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRoleId= '|| nRoleId ||', nObjId='|| nObjId );
1456
 
1457
            END IF;
1458
            /*-------------------------------------------------------*/
1459
 
1460
 
1461
            --- Set "Visible" state ----------------------------------
1462
 
1463
            -- Get PermId for "Visible"
1464
            SELECT pt.PERM_ID INTO nPermId FROM PERMISSION_TYPES pt WHERE pt.PERM_NAME = 'enumVISIBLE';
1465
 
1466
            Delete_Role_Permission ( nRoleId, nObjId, nPermId );
1467
 
1468
            IF cIsVisible IS NOT NULL THEN
1469
 
1470
               INSERT INTO ROLE_PRIVILEGES ( ROLE_ID, OBJ_ID, PERM_ID, PERM_VALUE )
1471
               VALUES ( nRoleId, nObjId, nPermId, cIsVisible );
1472
 
1473
            ELSE
1474
               IF cIsActive IS NOT NULL THEN
1475
                  -- If "Active" is Set then "Visible" must be "SHOW=Y"
1476
 
1477
                  INSERT INTO ROLE_PRIVILEGES ( ROLE_ID, OBJ_ID, PERM_ID, PERM_VALUE )
1478
                  VALUES ( nRoleId, nObjId, nPermId, 'Y' );
1479
 
1480
               END IF;
1481
 
1482
            END IF;
1483
 
1484
            --- Set "Active" state ----------------------------------
1485
 
1486
            -- Get PermId for "Visible"
1487
            SELECT pt.PERM_ID INTO nPermId FROM PERMISSION_TYPES pt WHERE pt.PERM_NAME = 'enumACTIVE';
1488
 
1489
            Delete_Role_Permission ( nRoleId, nObjId, nPermId );
1490
 
5297 dpurdie 1491
            IF cIsActive IS NOT NULL THEN
3927 dpurdie 1492
 
1493
               INSERT INTO ROLE_PRIVILEGES ( ROLE_ID, OBJ_ID, PERM_ID, PERM_VALUE )
1494
               VALUES ( nRoleId, nObjId, nPermId, cIsActive );
1495
 
1496
            END IF;
1497
 
1498
 
1499
         END   Set_Role_Permissions;
1500
         /*--------------------------------------------------------------------------------------------------*/
1501
         PROCEDURE Set_Role_Variation_Permissions ( nUserId IN USER_ROLES.USER_ID%TYPE,
1502
                                                   nAppId IN ROLES.APP_ID%TYPE,
1503
                                                   nRoleId IN ROLES.ROLE_ID%TYPE,
1504
                                                   nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
1505
                                                   cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE DEFAULT NULL,
1506
                                                   cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE  DEFAULT NULL ) IS
1507
 
1508
         nPermId             PERMISSION_TYPES.PERM_ID%TYPE DEFAULT 0;
1509
         nRoleVariationId    ROLES.ROLE_ID%TYPE DEFAULT NULL;
1510
         sUserName           USERS.USER_NAME%TYPE;
1511
         nDataPermCount      NUMBER;
1512
         nRolePermCount      NUMBER;
1513
 
1514
         --- Get Role Variation Id ---
1515
         CURSOR curRoleVariation IS
1516
               SELECT ro.ROLE_ID
1517
               FROM USER_ROLES ur,
1518
                     ROLES ro
1519
               WHERE ur.ROLE_ID = ro.ROLE_ID
1520
                  AND ro.IS_ROLE_VARIATION = 'Y'
1521
                  AND ur.USER_ID = nUserId;
1522
 
1523
         recRoleVariation curRoleVariation%ROWTYPE;
1524
 
1525
         BEGIN
1526
            /*--------------- Business Rules Here -------------------*/
1527
            IF (nUserId IS NULL) OR (nAppId IS NULL) OR (nObjId IS NULL)
1528
            THEN
1529
               RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nUserId='|| nUserId ||', nAppId='|| nAppId ||', nObjId='|| nObjId);
1530
 
1531
            END IF;
1532
            /*-------------------------------------------------------*/
1533
 
1534
            IF Is_Permissions_Changed( nRoleId, nObjId, cIsVisible, cIsActive ) THEN
1535
 
5297 dpurdie 1536
               IF nRoleId is not NULL AND Is_Role_Variation ( nRoleId ) THEN
3927 dpurdie 1537
                  --- Set this user role permissions ---
1538
                  Set_Role_Permissions ( nRoleId, nObjId, cIsVisible, cIsActive );
1539
 
1540
 
1541
                  --- Remove this user role for no permission settings ---
1542
                  -- Get Role Permissions Count
1543
                  SELECT Count(*) INTO nRolePermCount  FROM ROLE_PRIVILEGES rp WHERE rp.ROLE_ID = nRoleVariationId;
1544
 
1545
                  -- Get Role Permissions Count
1546
                  SELECT Count(*) INTO nDataPermCount  FROM DATA_PERMISSIONS dp WHERE dp.ROLE_ID = nRoleVariationId;
1547
 
1548
 
1549
                  IF (nRolePermCount = 0) AND (nDataPermCount = 0) THEN
1550
                     -- There are no permission settings, hence proceed to remove this user role
1551
                     DELETE
1552
                     FROM ROLES ro
1553
                     WHERE ro.ROLE_ID = nRoleVariationId;
1554
 
1555
                  END IF;
1556
 
1557
               ELSE
1558
                     --- Get Role Variation Id ---
1559
                  OPEN curRoleVariation;
1560
                  FETCH curRoleVariation INTO recRoleVariation;
1561
 
1562
                  IF curRoleVariation%FOUND THEN
1563
                     nRoleVariationId := recRoleVariation.ROLE_ID;
1564
                  END IF;
1565
 
1566
                  CLOSE curRoleVariation;
1567
 
1568
                  --- Create Role Variation if does not exist ---
1569
                  IF nRoleVariationId IS NULL THEN
1570
 
1571
                     -- Get role_id
1572
                     SELECT SEQ_ROLE_ID.NEXTVAL INTO nRoleVariationId FROM DUAL;
1573
 
1574
                     -- Get user_name
1575
                     SELECT usr.USER_NAME INTO sUserName FROM USERS usr WHERE usr.USER_ID = nUserId;
1576
 
1577
                     -- Create Role Variation
1578
                     INSERT INTO ROLES ( ROLE_ID, APP_ID, ROLE_NAME, IS_ROLE_VARIATION, COMMENTS )
1579
                     VALUES ( nRoleVariationId, nAppId, UPPER( sUserName ) || '_SPECIFIC', 'Y', 'Auto-created role to define user specific permissions.');
1580
 
1581
                     -- Link this role to user
1582
                     INSERT INTO USER_ROLES ( USER_ID, ROLE_ID )
1583
                     VALUES ( nUserId, nRoleVariationId );
1584
 
1585
                  END IF;
1586
 
1587
                  --- Set this user role permissions ---
1588
                  Set_Role_Permissions ( nRoleVariationId, nObjId, cIsVisible, cIsActive );
1589
 
1590
               END IF;
1591
 
1592
            END IF;
1593
 
1594
 
1595
         END   Set_Role_Variation_Permissions;
1596
         /*--------------------------------------------------------------------------------------------------*/
1597
         FUNCTION Is_Permissions_Changed ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
1598
                                          nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
1599
                                          cIsVisible IN ROLE_PRIVILEGES.PERM_VALUE%TYPE,
1600
                                          cIsActive IN ROLE_PRIVILEGES.PERM_VALUE%TYPE ) RETURN BOOLEAN IS
1601
 
1602
         ReturnValue       BOOLEAN DEFAULT FALSE;
1603
         cCurrentIsVisible ROLE_PRIVILEGES.PERM_VALUE%TYPE;
1604
         cCurrentIsActive  ROLE_PRIVILEGES.PERM_VALUE%TYPE;
1605
 
1606
         CURSOR curCurrentIsVisible IS
1607
               SELECT rp.PERM_VALUE
1608
               FROM ROLE_PRIVILEGES rp
1609
               WHERE rp.ROLE_ID = nRoleId
1610
                  AND rp.OBJ_ID = nObjId
1611
                  AND rp.PERM_ID = 1;
1612
         recCurrentIsVisible curCurrentIsVisible%ROWTYPE;
1613
 
1614
         CURSOR curCurrentIsActive IS
1615
               SELECT rp.PERM_VALUE
1616
               FROM ROLE_PRIVILEGES rp
1617
               WHERE rp.ROLE_ID = nRoleId
1618
                  AND rp.OBJ_ID = nObjId
1619
                  AND rp.PERM_ID = 2;
1620
         recCurrentIsActive curCurrentIsActive%ROWTYPE;
1621
 
1622
         BEGIN
1623
            /*--------------- Business Rules Here -------------------*/
1624
            /*-------------------------------------------------------*/
1625
 
1626
 
1627
            -- Get "Visible" Permission
1628
            OPEN curCurrentIsVisible;
1629
            FETCH curCurrentIsVisible INTO recCurrentIsVisible;
1630
 
1631
            IF curCurrentIsVisible%FOUND THEN
1632
               cCurrentIsVisible := recCurrentIsVisible.PERM_VALUE;
1633
            END IF;
1634
 
1635
            CLOSE curCurrentIsVisible;
1636
 
1637
            -- Get "Active" Permission
1638
            OPEN curCurrentIsActive;
1639
            FETCH curCurrentIsActive INTO recCurrentIsActive;
1640
 
1641
            IF curCurrentIsActive%FOUND THEN
1642
               cCurrentIsActive := recCurrentIsActive.PERM_VALUE;
1643
            END IF;
1644
 
1645
            CLOSE curCurrentIsActive;
1646
 
1647
            --- Compare ---
1648
            IF NOT Is_Same_String( cCurrentIsVisible, cIsVisible ) OR NOT Is_Same_String( cCurrentIsActive, cIsActive )  THEN
1649
               ReturnValue := TRUE;
1650
 
1651
            END IF;
1652
 
1653
            RETURN ReturnValue;
1654
         END   Is_Permissions_Changed;
1655
         /*--------------------------------------------------------------------------------------------------*/
1656
         FUNCTION Is_Role_Variation ( nRoleId IN ROLES.ROLE_ID%TYPE ) RETURN BOOLEAN IS
1657
 
1658
         ReturnValue     BOOLEAN DEFAULT FALSE;
1659
         cIsRoleVariation CHAR;
1660
 
1661
         BEGIN
1662
            /*--------------- Business Rules Here -------------------*/
1663
            /*-------------------------------------------------------*/
1664
 
1665
            -- Get is_role_variation
1666
            SELECT ro.IS_ROLE_VARIATION INTO cIsRoleVariation
1667
            FROM ROLES ro
1668
            WHERE ro.ROLE_ID = nRoleId;
1669
 
1670
            IF cIsRoleVariation IS NOT NULL THEN
1671
               ReturnValue := TRUE;
1672
            END IF;
1673
 
1674
            RETURN ReturnValue;
1675
         END   Is_Role_Variation;
1676
         /*--------------------------------------------------------------------------------------------------*/
1677
         PROCEDURE Delete_Role_Permission ( nRoleId IN ROLE_PRIVILEGES.ROLE_ID%TYPE,
1678
                                          nObjId IN ROLE_PRIVILEGES.OBJ_ID%TYPE,
1679
                                          nPermId IN ROLE_PRIVILEGES.PERM_ID%TYPE ) IS
1680
 
1681
 
1682
         BEGIN
1683
            /*--------------- Business Rules Here -------------------*/
1684
            IF (nRoleId IS NULL) OR (nObjId IS NULL) OR (nPermId IS NULL)
1685
            THEN
1686
               RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRoleId= '|| nRoleId ||', nObjId='|| nObjId ||', nPermId='|| nPermId );
1687
 
1688
            END IF;
1689
            /*-------------------------------------------------------*/
1690
 
1691
            DELETE
1692
            FROM ROLE_PRIVILEGES rp
1693
            WHERE rp.ROLE_ID = nRoleId
1694
               AND rp.OBJ_ID = nObjId
1695
               AND rp.PERM_ID = nPermId;
1696
 
1697
 
1698
         END   Delete_Role_Permission;
1699
         /*--------------------------------------------------------------------------------------------------*/
1700
         PROCEDURE Grant_Role ( sRoleIdList IN VARCHAR2,
1701
                              nUserId IN USER_ROLES.USER_ID%TYPE ) IS
1702
 
1703
 
1704
         BEGIN
1705
            /*--------------- Business Rules Here -------------------*/
1706
            IF sRoleIdList IS NULL THEN
1707
               RAISE_APPLICATION_ERROR (-20000, 'Please select at least one role.' );
1708
            END IF;
1709
            /*-------------------------------------------------------*/
1710
 
1711
            --- Grant Role(s) ---
1712
            INSERT INTO USER_ROLES ( USER_ID, ROLE_ID )
1713
            SELECT nUserId, qry.ROLE_ID
1714
            FROM (
1715
                  SELECT ro.ROLE_ID
1716
                     FROM ROLES ro
1717
                     WHERE ro.ROLE_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) )
1718
                  MINUS
1719
                  SELECT ur.ROLE_ID
1720
                     FROM USER_ROLES ur
1721
                     WHERE ur.USER_ID = nUserId
1722
                  ) qry;
1723
 
1724
 
1725
         END   Grant_Role;
1726
         /*--------------------------------------------------------------------------------------------------*/
1727
         PROCEDURE Revoke_Role ( sRoleIdList IN VARCHAR2,
1728
                                 nUserId IN USER_ROLES.USER_ID%TYPE ) IS
1729
 
1730
         nidcollector  ACCMGR_NUMBER_TAB_t := ACCMGR_NUMBER_TAB_t();
1731
         roleId        NUMBER;
1732
         roleName      ROLES.ROLE_NAME%TYPE;
1733
         sUserSpec     USERS.USER_NAME%TYPE;
1734
 
1735
         BEGIN
1736
            /*--------------- Business Rules Here -------------------*/
1737
            IF sRoleIdList IS NULL THEN
1738
               RAISE_APPLICATION_ERROR (-20000, 'Please select at least one role.' );
1739
            END IF;
1740
            /*-------------------------------------------------------*/
1741
 
1742
            --- Revoke Role(s) ---
1743
            DELETE FROM USER_ROLES ur
1744
            WHERE ur.USER_ID = nUserId
1745
               AND ur.ROLE_ID IN (SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sRoleIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) );
1746
 
1747
            -- Get user_name
1748
            SELECT usr.USER_NAME INTO sUserSpec FROM USERS usr WHERE usr.USER_ID = nUserId;
1749
            sUserSpec := UPPER( sUserSpec ) || '_SPECIFIC';
1750
 
1751
            nidcollector := IN_LIST_NUMBER (sRoleIdList);
1752
 
1753
            FOR i IN 1 .. nidcollector.COUNT
1754
            LOOP
1755
               roleId := nidcollector (i);
1756
 
1757
               -- Get the role name
1758
               select role_name into roleName from roles where role_id = roleId;
1759
 
1760
               -- See if the role name contains the users name
1761
               IF (IS_SAME_STRING(roleName, sUserSpec) = TRUE) THEN
1762
                  -- This is this users specific role and so we should remove it to ensure
1763
                  -- database is kept in a good clean state for the next time a specific
1764
                  -- role for this user is required
1765
 
1766
                  DELETE FROM ROLE_PRIVILEGES rp WHERE rp.ROLE_ID = roleId;
1767
 
1768
                  DELETE FROM DATA_PERMISSIONS dp WHERE dp.ROLE_ID = roleId;
1769
 
1770
                  DELETE FROM ROLES ro WHERE ro.ROLE_ID = roleId;
1771
                  EXIT WHEN TRUE;
1772
               END IF;
1773
 
1774
            END LOOP;
1775
         END   Revoke_Role;
1776
         /*--------------------------------------------------------------------------------------------------*/
1777
         END pk_Role;
1778
 
1779
/
1780
--------------------------------------------------------
1781
--  DDL for Package Body PK_SECURITY
1782
--------------------------------------------------------
1783
 
5297 dpurdie 1784
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_SECURITY" IS     
3927 dpurdie 1785
 
1786
/*
1787
------------------------------
1788
||  Last Modified:  S.Vukovic
1789
||  Modified Date:  28/Apr/2005  
1790
||  Body Version:   1.0
1791
------------------------------
1792
*/
1793
 
1794
/*-------------------------------------------------------------------------------------------------------*/
1795
FUNCTION IS_LOCAL_PASSWORD_CORRECT ( UserName IN VARCHAR2, UserPassword IN VARCHAR2 ) RETURN NUMBER IS
1796
	encryptedUserPassword VARCHAR2(4000);
1797
BEGIN
1798
	SELECT usr.USER_PASSWORD INTO encryptedUserPassword
1799
	  FROM USERS usr
1800
	 WHERE usr.USER_NAME = UserName;
1801
 
1802
	IF encryptedUserPassword = PK_AMUTILS.GET_HASH( UserPassword ) THEN
1803
		-- Password Correct
1804
		RETURN 1;
1805
	ELSE
1806
		-- Password Incorrect
1807
		RETURN -1; 
1808
	END IF;	 
1809
END;
1810
/*--------------------------------------------------------------------------------------------------*/
1811
FUNCTION Set_Password ( sUserName IN VARCHAR2, sPasswordA IN VARCHAR2, sPasswordB IN VARCHAR2 ) RETURN NUMBER IS
1812
 
1813
 
1814
BEGIN
1815
	-- Used to set password for the first time. 
1816
	-- It can only be set if previous password in null
1817
 
1818
	/*--------------- Business Rules Here -------------------*/
1819
	/*-------------------------------------------------------*/
1820
 
1821
	IF sPasswordA = sPasswordB THEN
1822
		-- Update passwords
1823
		UPDATE USERS usr SET
1824
		  usr.USER_PASSWORD = PK_AMUTILS.Get_Hash ( sPasswordA )
1825
		WHERE usr.USER_NAME = sUserName
1826
		  AND usr.USER_PASSWORD IS NULL;
1827
 
1828
		-- Successfull update
1829
		RETURN 1;	  
1830
 
1831
	ELSE
1832
		-- Password mistmatch
1833
		RETURN -1;	
1834
	END IF;
1835
 
1836
 
1837
END;
1838
/*-------------------------------------------------------------------------------------------------------*/
1839
PROCEDURE GET_USER_STATIC_PERMISSIONS ( UsedId IN NUMBER, AppId IN NUMBER, RecordSet OUT typeCur) IS
1840
 
1841
BEGIN
1842
 
1843
	OPEN RecordSet FOR
1844
	SELECT co.obj_name, perm.perm_id, perm.perm_value
1845
	  FROM (
1846
 
1847
	  	    (
1848
	  	    /* All 'Y' User Permissions */	  
1849
 
1850
			/* Get all 'Y' permissions */
1851
			SELECT DISTINCT rp.OBJ_ID, rp.PERM_ID, rp.PERM_VALUE
1852
			  FROM USER_ROLES ur,
1853
			  	   ROLE_PRIVILEGES rp,
1854
				   ROLES ro
1855
	         WHERE ur.ROLE_ID = ro.ROLE_ID
1856
			   AND rp.ROLE_ID = ro.ROLE_ID
1857
			   AND ur.USER_ID = UsedId
1858
			   AND rp.PERM_VALUE = 'Y'	
1859
			   --AND ro.APP_ID = AppId   
1860
			MINUS
1861
			/* Revoke permissions if they set to 'N'*/
1862
			SELECT DISTINCT rp.OBJ_ID, rp.PERM_ID, 'Y' AS PERM_VALUE
1863
			  FROM USER_ROLES ur,
1864
			  	   ROLE_PRIVILEGES rp,
1865
				   ROLES ro
1866
	         WHERE ur.ROLE_ID = ro.ROLE_ID
1867
			   AND rp.ROLE_ID = ro.ROLE_ID
1868
			   AND ur.USER_ID = UsedId
1869
			   AND rp.PERM_VALUE = 'N'	
1870
			  -- AND ro.APP_ID = AppId
1871
 
1872
			)
1873
 
1874
			MINUS    
1875
 
1876
			/* Role Variant Revokes */   
1877
			SELECT DISTINCT rp.OBJ_ID, rp.perm_id, 'Y' AS perm_value
1878
			  FROM role_privileges rp,
1879
			       ROLES ro,
1880
			       user_roles ur
1881
			 WHERE ro.role_id = rp.role_id
1882
			   AND ro.role_id = ur.role_id
1883
			   AND rp.PERM_VALUE = 'N'
1884
			   AND ro.IS_ROLE_VARIATION = 'Y'
1885
			   AND ur.user_id = UsedId
1886
			  -- AND ro.APP_ID = AppId 
1887
 
1888
	  	   ) perm,
1889
	       control_objects co
1890
	 WHERE perm.obj_id = co.obj_id;
1891
	  -- AND co.APP_ID = AppId;
1892
 
1893
 
1894
END;
1895
/*-------------------------------------------------------------------------------------------------------*/
1896
PROCEDURE GET_USER_DATA_PERMISSIONS ( UsedId IN NUMBER, AppId IN NUMBER, RecordSet OUT typeCur) IS
1897
 
1898
BEGIN
1899
 
1900
	OPEN RecordSet FOR
1901
	SELECT qry.TABLE_NAME,
1902
	 	   qry.REF_COLUMN_VAL,
1903
	 	   qry.PERM_ID,
5297 dpurdie 1904
	 	   qry.PERM_VALUE,
1905
       co.OBJ_NAME
3927 dpurdie 1906
	  FROM CONTROL_OBJECTS co,
1907
		   DATA_TABLES dt,
1908
			(
1909
 
1910
			/* Access Control Data Permissions */	
1911
			 SELECT bl.DT_ID,
1912
			 		bl.TABLE_NAME,
1913
			 		bl.REF_COLUMN_VAL,
1914
			 		bl.PERM_ID,
5297 dpurdie 1915
			 		DECODE ( yc.PERM_VALUE, NULL, bl.PERM_VALUE, yc.PERM_VALUE ) AS PERM_VALUE
3927 dpurdie 1916
			  FROM (
1917
			       	/* Get base list for Data Permissions */   
1918
				 	SELECT rol.ROLE_ID, dt.DT_ID, dt.TABLE_NAME, 0 AS REF_COLUMN_VAL, pt.PERM_ID, 'Y' AS PERM_VALUE 
1919
				 	  FROM CONTROL_OBJECTS co,
1920
				 	  	   DATA_TABLES dt,
1921
				 		   PERMISSION_TYPES pt,
5297 dpurdie 1922
               DATA_PERMISSIONS dp,
3927 dpurdie 1923
				 		   (
1924
				 		    /* Get User Roles for this Application */
1925
				 		    SELECT ro.*
1926
				 			  FROM ROLES ro,
1927
				 			  	   USER_ROLES ur
1928
				 			 WHERE ur.ROLE_ID = ro.ROLE_ID
1929
				 			   --AND ro.APP_ID = AppId
1930
				 			   AND ur.USER_ID = UsedId
1931
				 		   ) rol
1932
				 	 WHERE dt.OBJ_ID = co.OBJ_ID
5297 dpurdie 1933
           AND dp.DT_ID = dt.DT_ID
1934
           AND dp.ROLE_ID = rol.ROLE_ID
3927 dpurdie 1935
				 	   --AND co.APP_ID = AppId
1936
			  	   ) bl,
1937
			       (
1938
			 		 /* Find only 'Y' Permissions, which will change 'All' permission to 'N' */
1939
			 		 SELECT dt.DT_ID, 0 AS REF_COLUMN_VAL, dp.PERM_ID, 'N' AS PERM_VALUE, COUNT(*) AS YES_COUNT 
1940
			 		  FROM DATA_PERMISSIONS dp,
1941
			 		  	   DATA_TABLES dt,
1942
			 			   ROLES ro,
1943
			 			   USER_ROLES ur
1944
			 		 WHERE ur.ROLE_ID = ro.ROLE_ID
1945
			 		   AND dp.ROLE_ID = ro.ROLE_ID
1946
			 		   AND dp.DT_ID = dt.DT_ID	 
1947
			 		  -- AND ro.APP_ID = AppId 
1948
			 		   AND ur.USER_ID = UsedId 
1949
			 		   AND ro.IS_ROLE_VARIATION IS NULL
1950
			 		 GROUP BY dt.DT_ID, dp.PERM_ID
1951
			 		) yc 
1952
			  WHERE yc.DT_ID (+) = bl.DT_ID
1953
			    AND yc.PERM_ID (+) = bl.PERM_ID
1954
			UNION
1955
			(
1956
			/* Get Filter Settings for All Permission Types */ 
1957
			SELECT dt.DT_ID, dt.TABLE_NAME, dp.REF_COLUMN_VAL, dp.PERM_ID, dp.PERM_VALUE 
1958
			  FROM DATA_PERMISSIONS dp,
1959
			  	   DATA_TABLES dt,
1960
				   ROLES ro,
1961
				   USER_ROLES ur
1962
			 WHERE ur.ROLE_ID = ro.ROLE_ID
1963
			   AND dp.ROLE_ID = ro.ROLE_ID
1964
			   AND dp.DT_ID = dt.DT_ID	 
1965
			  -- AND ro.APP_ID = AppId 
1966
			   AND ur.USER_ID = UsedId
1967
			MINUS  
1968
			/* Overwrite Data Permissions using User Specific Role */
1969
			SELECT DISTINCT
1970
				   dt.DT_ID, 
1971
				   dt.TABLE_NAME,
1972
				   dp.REF_COLUMN_VAL,
1973
				   dp.PERM_ID,
1974
				   DECODE ( dp.PERM_VALUE,
1975
				   		  	'Y', 'N', 'Y' ) AS PERM_VALUE
1976
			  FROM DATA_PERMISSIONS dp,
1977
			  	   DATA_TABLES dt,
1978
				   ROLES ro,
1979
				   USER_ROLES ur
1980
			 WHERE ur.ROLE_ID = ro.ROLE_ID
1981
			   AND dp.ROLE_ID = ro.ROLE_ID
1982
			   AND dp.DT_ID = dt.DT_ID	 
1983
			 --  AND ro.APP_ID = AppId 
1984
			   AND ur.USER_ID = UsedId 
1985
			   AND ro.IS_ROLE_VARIATION = 'Y'   
1986
			)
1987
 
1988
			) qry
1989
	  WHERE dt.OBJ_ID = co.OBJ_ID
1990
		AND dt.DT_ID = qry.DT_ID;
1991
		--AND co.APP_ID = AppId;
1992
 
1993
END;
1994
/*-------------------------------------------------------------------------------------------------------*/
1995
END PK_SECURITY;
1996
 
1997
/
1998
--------------------------------------------------------
1999
--  DDL for Package Body PK_USER
2000
--------------------------------------------------------
2001
 
5297 dpurdie 2002
  CREATE OR REPLACE PACKAGE BODY "ACCESS_MANAGER"."PK_USER" IS
3927 dpurdie 2003
/*
2004
------------------------------
2005
||  Last Modified:  J.Tweddle
2006
||  Modified Date:  21/Jan/2008  
2007
||  Body Version:   2.1
2008
------------------------------
2009
*/
2010
 
2011
/*--------------------------------------------------------------------------------------------------*/
2012
PROCEDURE Add_User_Account ( sFullName IN USERS.FULL_NAME%TYPE,
2013
		  		   	 	   	 sUserName IN USERS.USER_NAME%TYPE,
2014
							 sUserEmail IN USERS.USER_EMAIL%TYPE,
2015
							 sDomain IN USERS.DOMAIN%TYPE   ) IS
2016
 
2017
UserId NUMBER;
2018
 
2019
 
2020
BEGIN
2021
	/*--------------- Business Rules Here -------------------*/
2022
	/*-------------------------------------------------------*/
2023
 
2024
 
2025
	-- Get user_id
2026
	SELECT SEQ_USER_ID.NEXTVAL INTO UserId FROM DUAL;
2027
 
2028
	-- Insert new User Account
2029
	INSERT INTO USERS (USER_ID, FULL_NAME, USER_NAME, USER_EMAIL, DOMAIN )
2030
	VALUES( UserId, sFullName, sUserName, sUserEmail, sDomain );
2031
 
2032
 
2033
	EXCEPTION
2034
        WHEN DUP_VAL_ON_INDEX
2035
	THEN		
2036
		RAISE_APPLICATION_ERROR (-20000, 'User Name '|| sUserName ||' already exists.');
2037
 
2038
END     Add_User_Account;
2039
 
2040
/*--------------------------------------------------------------------------------------------------*/
2041
PROCEDURE Update_User_Account ( sUserId IN VARCHAR2, sFullName IN USERS.FULL_NAME%TYPE,
2042
		  		   	 	   	 sUserName IN USERS.USER_NAME%TYPE,
2043
							 sUserEmail IN USERS.USER_EMAIL%TYPE,
2044
							 sDomain IN USERS.DOMAIN%TYPE   ) IS
2045
 
2046
BEGIN
2047
	/*--------------- Business Rules Here -------------------*/
2048
	IF (sUserId IS NULL) THEN
2049
	   RAISE_APPLICATION_ERROR (-20000, 'Please select a User Account.' );
2050
	END IF;
2051
	/*-------------------------------------------------------*/
2052
 
2053
        -- Update User Account
2054
	UPDATE USERS usr SET
2055
	usr.FULL_NAME = sFullName, usr.USER_NAME = sUserName, usr.USER_EMAIL = sUserEmail, usr.DOMAIN = sDomain
2056
	WHERE usr.USER_ID = sUserId;
2057
 
2058
END     Update_User_Account;
2059
 
2060
/*--------------------------------------------------------------------------------------------------*/
2061
PROCEDURE Add_Application_User ( sUserIdList IN VARCHAR2,
2062
		  					   	 nAppId IN USER_APPLICATIONS.APP_ID%TYPE,
2063
								 cIncludeEveryone IN CHAR ) IS
2064
 
2065
 
2066
BEGIN
2067
	/*--------------- Business Rules Here -------------------*/
2068
	IF (sUserIdList IS NULL) AND (cIncludeEveryone IS NULL) THEN
2069
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User.' );
2070
	END IF;
2071
	/*-------------------------------------------------------*/
2072
 
2073
	-- Insert Application User --
2074
 
2075
	IF cIncludeEveryone = 'Y' THEN
2076
	    -- Insert All Users
2077
		INSERT INTO USER_APPLICATIONS ( USER_ID, APP_ID )
2078
		SELECT qry.USER_ID, nAppId
2079
		  FROM (
2080
				SELECT usr.USER_ID
2081
				  FROM USERS usr 
2082
				MINUS
2083
				SELECT ua.USER_ID
2084
				  FROM USER_APPLICATIONS ua
2085
				 WHERE ua.APP_ID = nAppId
2086
		  	   ) qry;
2087
 
2088
	ELSE
2089
		-- Insert specific user list
2090
		INSERT INTO USER_APPLICATIONS ( USER_ID, APP_ID )
2091
		SELECT qry.USER_ID, nAppId
2092
		  FROM (
2093
		  	   	SELECT usr.USER_ID
2094
				  FROM USERS usr
2095
				 WHERE usr.USER_ID IN (
2096
				 	   			  	  SELECT *
2097
								   	    FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2098
				   	   			   	  )
2099
		  	    MINUS
2100
				SELECT ua.USER_ID
2101
				  FROM USER_APPLICATIONS ua
2102
				 WHERE ua.APP_ID = nAppId
2103
				   AND ua.USER_ID IN (
2104
				 	   			  	  SELECT *
2105
								   	    FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2106
				   	   			   	  )
2107
		  	   ) qry;
2108
 
2109
	END IF;
2110
 
2111
 
2112
	--- Make sure Build in User is not included ---
2113
	Remove_Application_User ( '0', nAppId );
2114
 
2115
 
2116
END	Add_Application_User;
2117
 
2118
/*--------------------------------------------------------------------------------------------------*/
2119
PROCEDURE Remove_Application_User ( sUserIdList IN VARCHAR2,
2120
		  					   	  	nAppId IN USER_APPLICATIONS.APP_ID%TYPE,
2121
									cIncludeEveryone IN CHAR DEFAULT NULL) IS
2122
 
2123
 
2124
BEGIN
2125
	/*--------------- Business Rules Here -------------------*/
2126
	IF (sUserIdList IS NULL) AND (cIncludeEveryone IS NULL) THEN
2127
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User.' );
2128
	END IF;
2129
	/*-------------------------------------------------------*/
2130
 
2131
	IF cIncludeEveryone = 'Y' THEN
2132
	   	-- Remove All Users --
2133
		DELETE
2134
		  FROM user_applications ua
2135
		 WHERE ua.app_id = nAppId;
2136
 
2137
	ELSE
2138
		-- Remove Application Users --
2139
		DELETE
2140
		  FROM user_applications ua
2141
		 WHERE ua.app_id = nAppId
2142
		   AND ua.user_id IN (
2143
                       SELECT *
2144
                         FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual )
2145
                       );
2146
                -- Remove User(s) Application Roles --
2147
                DELETE
2148
                  FROM user_roles ur
2149
                 WHERE ur.user_id IN (
2150
                       SELECT *
2151
                         FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual )
2152
                       )
2153
                   AND ur.role_id IN (
2154
                       SELECT ro.role_id
2155
                         FROM roles ro
2156
                        WHERE ro.app_id = nAppId
2157
                       );
2158
	END IF;
2159
 
2160
 
2161
END	Remove_Application_User;
2162
 
2163
/*--------------------------------------------------------------------------------------------------*/
2164
PROCEDURE Add_Role_Member ( sUserIdList IN VARCHAR2,
2165
		  					nRoleId IN USER_ROLES.ROLE_ID%TYPE,
2166
							cIncludeEveryone IN CHAR ) IS
2167
 
2168
 
2169
BEGIN
2170
	/*--------------- Business Rules Here -------------------*/
2171
	IF (sUserIdList IS NULL) AND (cIncludeEveryone IS NULL) THEN
2172
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User.' );
2173
	END IF;
2174
	/*-------------------------------------------------------*/
2175
 
2176
	-- Insert Role Member --
2177
 
2178
	IF cIncludeEveryone = 'Y' THEN
2179
	    -- Insert All Users
2180
		INSERT INTO USER_ROLES ( USER_ID, ROLE_ID )
2181
		SELECT qry.USER_ID, nRoleId
2182
		  FROM (
2183
				SELECT usr.USER_ID
2184
				  FROM USERS usr 
2185
				MINUS
2186
				SELECT ur.USER_ID
2187
				  FROM USER_ROLES ur
2188
				 WHERE ur.ROLE_ID = nRoleId
2189
		  	   ) qry;
2190
 
2191
	ELSE
2192
		-- Insert specific user list
2193
		INSERT INTO USER_ROLES ( USER_ID, ROLE_ID )
2194
		SELECT qry.USER_ID, nRoleId
2195
		  FROM (
2196
		  	   	SELECT usr.USER_ID
2197
				  FROM USERS usr
2198
				 WHERE usr.USER_ID IN (
2199
				 	   			  	  SELECT *
2200
								   	    FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2201
				   	   			   	  )
2202
		  	    MINUS
2203
				SELECT ur.USER_ID
2204
				  FROM USER_ROLES ur
2205
				 WHERE ur.ROLE_ID = nRoleId
2206
				   AND ur.USER_ID IN (
2207
				 	   			  	  SELECT *
2208
								   	    FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2209
				   	   			   	  )
2210
		  	   ) qry;
2211
 
2212
	END IF;
2213
 
2214
 
2215
	--- Make sure Build in User is not included ---
2216
	Remove_Role_Member ( '0', nRoleId );
2217
 
2218
 
2219
END	Add_Role_Member;
2220
 
2221
/*--------------------------------------------------------------------------------------------------*/
2222
PROCEDURE Remove_Role_Member ( sUserIdList IN VARCHAR2,
2223
		  					   nRoleId IN USER_ROLES.ROLE_ID%TYPE,
2224
							   cIncludeEveryone IN CHAR DEFAULT NULL) IS
2225
 
2226
 
2227
BEGIN
2228
	/*--------------- Business Rules Here -------------------*/
2229
	IF (nRoleId IS NULL) THEN
2230
		RAISE_APPLICATION_ERROR (-20000, 'RoleId is missing.' );
2231
	END IF;
2232
 
2233
	IF (sUserIdList IS NULL) AND (cIncludeEveryone IS NULL) THEN
2234
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User.' );
2235
	END IF;
2236
	/*-------------------------------------------------------*/
2237
 
2238
	IF cIncludeEveryone = 'Y' THEN
2239
	   	-- Remove All Users --
2240
		DELETE
2241
		  FROM USER_ROLES ur
2242
		 WHERE ur.ROLE_ID = nRoleId;
2243
 
2244
	ELSE
2245
		-- Remove Application Users --
2246
		DELETE
2247
		  FROM USER_ROLES ur
2248
		 WHERE ur.ROLE_ID = nRoleId
2249
		   AND ur.USER_ID IN (
2250
		 	   			  	  SELECT *
2251
						   	    FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2252
		   	   			   	  );		
2253
	END IF;
2254
 
2255
 
2256
END	Remove_Role_Member;
2257
 
2258
/*--------------------------------------------------------------------------------------------------*/
2259
PROCEDURE Disable_Users ( sUserIdList IN VARCHAR2,
2260
 					   	  nAppId IN USER_APPLICATIONS.APP_ID%TYPE ) IS
2261
 
2262
 
2263
BEGIN
2264
	/*--------------- Business Rules Here -------------------*/
2265
	IF (sUserIdList IS NULL) THEN
2266
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User.' );
2267
	END IF;
2268
	/*-------------------------------------------------------*/
2269
 
2270
 
2271
	-- Disable User Accounts
2272
	UPDATE USERS usr SET
2273
	usr.IS_DISABLED = 'Y'
2274
	WHERE usr.USER_ID IN (
2275
		 	   			   SELECT *
2276
						     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2277
		   	   			  );	
2278
 
2279
END	Disable_Users;
2280
 
2281
/*--------------------------------------------------------------------------------------------------*/
2282
PROCEDURE Remove_User_Account ( sUserIdList IN VARCHAR2 ) IS
2283
 
2284
rowCount NUMBER DEFAULT 0;
2285
 
2286
BEGIN
2287
	/*--------------- Business Rules Here -------------------*/
2288
 
2289
	IF (sUserIdList IS NULL) THEN
2290
	   RAISE_APPLICATION_ERROR (-20000, 'Please select at least one User Account.' );
2291
	END IF;
2292
 
2293
 
2294
	-- Check if any Users have any roles
2295
	SELECT Count(*) INTO rowCount
2296
	  FROM USER_ROLES ur
2297
	 WHERE ur.USER_ID IN  (
2298
						   SELECT *
2299
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2300
	   	   			   	   );
2301
 
2302
	IF rowCount > 0 THEN
2303
	   RAISE_APPLICATION_ERROR (-20000, 'Some Users still have Roles assigned. ( Counted '|| rowCount ||' ).' );
2304
	END IF; 
2305
 
2306
	/*-------------------------------------------------------*/
2307
 
2308
	-- Remove User Applications --
2309
	DELETE 
2310
	  FROM USER_APPLICATIONS ua
2311
	 WHERE ua.USER_ID IN  (
2312
						   SELECT *
2313
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2314
	   	   			   	   );
2315
 
2316
	-- Remove User -- 
2317
	DELETE 
2318
	  FROM USERS us
2319
	 WHERE us.USER_ID IN  (
2320
						   SELECT *
2321
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS ACCMGR_NUMBER_TAB_t ) FROM dual ) 
2322
	   	   			   	   );
2323
 
2324
 
2325
END	Remove_User_Account;
2326
/*--------------------------------------------------------------------------------------------------*/
2327
END pk_user;
2328
 
2329
/
5297 dpurdie 2330
--------------------------------------------------------
2331
--  DDL for Synonymn DM_DEF_MENU_ITEMS
2332
--------------------------------------------------------
3927 dpurdie 2333
 
5297 dpurdie 2334
  CREATE OR REPLACE SYNONYM "ACCESS_MANAGER"."DM_DEF_MENU_ITEMS" FOR "DM_DEV"."DEF_MENU_ITEMS";
2335
--------------------------------------------------------
2336
--  DDL for Synonymn DM_DM_PROJECTS
2337
--------------------------------------------------------
2338
 
2339
  CREATE OR REPLACE SYNONYM "ACCESS_MANAGER"."DM_DM_PROJECTS" FOR "DEPLOYMENT_MANAGER"."DM_PROJECTS";
2340
--------------------------------------------------------
2341
--  DDL for Synonymn PM_DM_PROJECTS
2342
--------------------------------------------------------
2343
 
2344
  CREATE OR REPLACE SYNONYM "ACCESS_MANAGER"."PM_DM_PROJECTS" FOR "DEPLOYMENT_MANAGER"."DM_PROJECTS";
2345
--------------------------------------------------------
2346
--  DDL for Synonymn PROJECTS
2347
--------------------------------------------------------
2348
 
2349
  CREATE OR REPLACE SYNONYM "ACCESS_MANAGER"."PROJECTS" FOR "RELEASE_MANAGER"."PROJECTS";
2350
--------------------------------------------------------
2351
--  DDL for Synonymn RM_PROJECTS
2352
--------------------------------------------------------
2353
 
2354
  CREATE OR REPLACE SYNONYM "ACCESS_MANAGER"."RM_PROJECTS" FOR "RELEASE_MANAGER"."PROJECTS";