Subversion Repositories DevTools

Rev

Rev 5297 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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