From f5e160010b0e8ce156114c764fab69dd6593eb99 Mon Sep 17 00:00:00 2001 From: hardya Date: Mon, 12 Nov 2007 12:07:25 +0000 Subject: [PATCH] New tables: PASSWORDS - holds history of passwords for parties ACCESS_CONTROLS - hold page, item / role information for authorization purposes. Modified tables: ENQUIRIES - meter size removed. Replaced by foreign key to METER_SIZE_CODES. COSTS - includes AICO_CODE and DESCRIPTION for use as cost details for Additional Items. General modifications: Yes/No columns modified to VARCHAR2(3) Modules: Added mip_security.pck. Supports Authentication and Authorization (update of the original POC version) Respository: Created new directory structure to hold persistent data. Currently includes Data/Seed for base table values and Data/Demo to populate various party and relationship tables. git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@2838 248e525c-4dfb-0310-94bc-949c084e9493 --- Data/Demo/InstallDemoData.cmd | 23 +++ Data/Demo/create_passwords.sql | 22 ++ Data/Demo/delete_demo_data.sql | 5 + Data/Demo/parl.ctl | 38 ++++ Data/Demo/prel.ctl | 44 ++++ Data/Demo/prty.ctl | 59 ++++++ {Schema => Data/Seed}/InstallSeed.cmd | 0 {Schema => Data/Seed}/MESC.ctl | 2 +- {Schema => Data/Seed}/SVCPT.ctl | 0 {Schema => Data/Seed}/alty.ctl | 0 {Schema => Data/Seed}/caca.ctl | 0 {Schema => Data/Seed}/caco.ctl | 0 {Schema => Data/Seed}/cnor.ctl | 0 {Schema => Data/Seed}/cnty.ctl | 0 {Schema => Data/Seed}/comt.ctl | 0 {Schema => Data/Seed}/delete_tables.sql | 0 {Schema => Data/Seed}/disable_constraints.sql | 0 {Schema => Data/Seed}/enable_constraints.sql | 0 {Schema => Data/Seed}/enrt.ctl | 0 {Schema => Data/Seed}/enst.ctl | 0 {Schema => Data/Seed}/enty.ctl | 0 {Schema => Data/Seed}/fity.ctl | 0 {Schema => Data/Seed}/hoty.ctl | 0 {Schema => Data/Seed}/mety.ctl | 0 {Schema => Data/Seed}/part.ctl | 0 {Schema => Data/Seed}/pcmrt.ctl | 0 {Schema => Data/Seed}/prt.ctl | 0 {Schema => Data/Seed}/prtp.ctl | 0 {Schema => Data/Seed}/qurt.ctl | 0 {Schema => Data/Seed}/qust.ctl | 0 {Schema => Data/Seed}/rety.ctl | 0 {Schema => Data/Seed}/rvty.ctl | 0 {Schema => Data/Seed}/slty.ctl | 0 {Schema => Data/Seed}/slva.ctl | 0 {Schema => Data/Seed}/svcp.ctl | 0 InstallMIP.cmd | 33 +++ Modules/Modules.sql | 7 + Modules/mip_security.pck | 190 ++++++++++++++++++ Schema/InstallMIP.cmd | 2 - Schema/InstallMIP.sql | 2 +- Schema/mip.con | 84 +++++--- Schema/mip.ind | 28 ++- Schema/mip.sql | 2 +- Schema/mip.sqs | 9 +- Schema/mip.tab | 49 +++-- 45 files changed, 541 insertions(+), 58 deletions(-) create mode 100644 Data/Demo/InstallDemoData.cmd create mode 100644 Data/Demo/create_passwords.sql create mode 100644 Data/Demo/delete_demo_data.sql create mode 100644 Data/Demo/parl.ctl create mode 100644 Data/Demo/prel.ctl create mode 100644 Data/Demo/prty.ctl rename {Schema => Data/Seed}/InstallSeed.cmd (100%) rename {Schema => Data/Seed}/MESC.ctl (94%) rename {Schema => Data/Seed}/SVCPT.ctl (100%) rename {Schema => Data/Seed}/alty.ctl (100%) rename {Schema => Data/Seed}/caca.ctl (100%) rename {Schema => Data/Seed}/caco.ctl (100%) rename {Schema => Data/Seed}/cnor.ctl (100%) rename {Schema => Data/Seed}/cnty.ctl (100%) rename {Schema => Data/Seed}/comt.ctl (100%) rename {Schema => Data/Seed}/delete_tables.sql (100%) rename {Schema => Data/Seed}/disable_constraints.sql (100%) rename {Schema => Data/Seed}/enable_constraints.sql (100%) rename {Schema => Data/Seed}/enrt.ctl (100%) rename {Schema => Data/Seed}/enst.ctl (100%) rename {Schema => Data/Seed}/enty.ctl (100%) rename {Schema => Data/Seed}/fity.ctl (100%) rename {Schema => Data/Seed}/hoty.ctl (100%) rename {Schema => Data/Seed}/mety.ctl (100%) rename {Schema => Data/Seed}/part.ctl (100%) rename {Schema => Data/Seed}/pcmrt.ctl (100%) rename {Schema => Data/Seed}/prt.ctl (100%) rename {Schema => Data/Seed}/prtp.ctl (100%) rename {Schema => Data/Seed}/qurt.ctl (100%) rename {Schema => Data/Seed}/qust.ctl (100%) rename {Schema => Data/Seed}/rety.ctl (100%) rename {Schema => Data/Seed}/rvty.ctl (100%) rename {Schema => Data/Seed}/slty.ctl (100%) rename {Schema => Data/Seed}/slva.ctl (100%) rename {Schema => Data/Seed}/svcp.ctl (100%) create mode 100644 InstallMIP.cmd create mode 100644 Modules/Modules.sql create mode 100644 Modules/mip_security.pck diff --git a/Data/Demo/InstallDemoData.cmd b/Data/Demo/InstallDemoData.cmd new file mode 100644 index 0000000..f08aaec --- /dev/null +++ b/Data/Demo/InstallDemoData.cmd @@ -0,0 +1,23 @@ +@echo off + +if "%1"=="" goto :usage +if "%1"=="sys" goto :usage +if "%1"=="system" goto :usage + +sqlplus %1 @delete_demo_data + +sqlldr %1 control=prty + +sqlldr %1 control=parl + +sqlldr %1 control=prel + +sqlplus %1 @create_passwords + +goto :done + +:usage + +echo usage InstallDemoData user/password@database + +:done diff --git a/Data/Demo/create_passwords.sql b/Data/Demo/create_passwords.sql new file mode 100644 index 0000000..e44f52b --- /dev/null +++ b/Data/Demo/create_passwords.sql @@ -0,0 +1,22 @@ +DECLARE + l_hash dbms_obfuscation_toolkit.varchar2_checksum; +BEGIN + FOR l_pwd IN (SELECT id + ,upper(username) || '/' || upper(username) AS str + FROM parties + WHERE username IS NOT NULL) LOOP + + l_hash := dbms_obfuscation_toolkit.md5(input_string => l_pwd.str); + + INSERT INTO passwords + (prty_id + ,password_hash + ,created_on) + VALUES + (l_pwd.id + ,l_hash + ,SYSDATE); + END LOOP; +END; +/ +exit diff --git a/Data/Demo/delete_demo_data.sql b/Data/Demo/delete_demo_data.sql new file mode 100644 index 0000000..7d58f9c --- /dev/null +++ b/Data/Demo/delete_demo_data.sql @@ -0,0 +1,5 @@ +delete from party_relationships; +delete from party_roles; +delete from passwords; +delete from parties; +exit diff --git a/Data/Demo/parl.ctl b/Data/Demo/parl.ctl new file mode 100644 index 0000000..b7ff654 --- /dev/null +++ b/Data/Demo/parl.ctl @@ -0,0 +1,38 @@ +LOAD DATA +INFILE * +INTO TABLE party_roles +REPLACE +FIELDS TERMINATED BY '|' +( +prty_id +,rt_code +,id +,start_date +,end_date +,description +) +BEGINDATA +200|SUPP|2001|08-NOV-07||| +201|SUPP|2011|08-NOV-07||| +202|SUPP|2021|08-NOV-07||| +203|SUPP|2031|08-NOV-07||| +204|SUPP|2041|08-NOV-07||| +205|SUPP|2051|08-NOV-07||| +206|SUPP|2061|08-NOV-07||| +207|SUPP|2071|08-NOV-07||| +208|SUPP|2081|08-NOV-07||| +400|MIPADMIN|4001|08-NOV-07||| +400|CS|4002|08-NOV-07||| +400|ICU|4003|08-NOV-07||| +401|MIPADMIN|4011|08-NOV-07||| +401|CS|4012|08-NOV-07||| +401|ICU|4013|08-NOV-07||| +402|MIPADMIN|4021|08-NOV-07||| +403|MIPADMIN|4031|08-NOV-07||| +404|AGENT|4041|08-NOV-07||| +404|SUPPADMIN|4042|08-NOV-07||| +405|AGENT|4051|08-NOV-07||| +405|SUPPADMIN|4052|08-NOV-07||| +406|AGENT|4061|08-NOV-07||| +407|AGENT|4071|08-NOV-07||| +408|AGENT|4081|08-NOV-07||| diff --git a/Data/Demo/prel.ctl b/Data/Demo/prel.ctl new file mode 100644 index 0000000..a230a93 --- /dev/null +++ b/Data/Demo/prel.ctl @@ -0,0 +1,44 @@ +LOAD DATA +INFILE * +INTO TABLE party_relationships +REPLACE +FIELDS TERMINATED BY '|' +( +from_parl_id +,to_parl_id +,from_parl_prty_id +,to_parl_prty_id +,from_parl_rt_code +,to_parl_rt_code +,start_date +,from_prtp_rt_code +,to_prtp_rt_code +) +BEGINDATA +4041|2001|404|200|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4041|2011|404|201|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4041|2021|404|202|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4042|2001|404|200|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4042|2011|404|201|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4042|2021|404|202|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4042|2031|404|203|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4042|2041|404|204|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4042|2051|404|205|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4051|2001|405|200|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4051|2011|405|201|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4051|2021|405|202|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4052|2031|405|203|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4052|2041|405|204|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4052|2051|405|205|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4052|2061|405|206|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4052|2071|405|207|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4052|2081|405|208|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP +4061|2031|406|203|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4061|2041|406|204|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4061|2051|406|205|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4071|2031|407|203|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4071|2041|407|204|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4071|2051|407|205|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4081|2061|408|206|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4081|2071|408|207|AGENT|SUPP|08-NOV-07|AGENT|SUPP +4081|2081|408|208|AGENT|SUPP|08-NOV-07|AGENT|SUPP diff --git a/Data/Demo/prty.ctl b/Data/Demo/prty.ctl new file mode 100644 index 0000000..207ea65 --- /dev/null +++ b/Data/Demo/prty.ctl @@ -0,0 +1,59 @@ +LOAD DATA +INFILE * +INTO TABLE parties +REPLACE +FIELDS TERMINATED BY '|' +( +manu_ref +,created_by +,shortcode +,name +,description +,created_on +,updated_on +,updated_by +,mktp_ref +,lt_7b_contract_ref +,gt_7b_contract_ref +,adversarial_contract_ref +,username +,status +,first_name +,last_name +,personal_title +,comments +,id +,prty_type +) +BEGINDATA +ACT|hardya||ACTARIS||08-NOV-07||||||||||||Manufactures meters|100|MANU +DRE|hardya||DRESSER||08-NOV-07||||||||||||Manufactures meters|101|MANU +QUI|hardya||QUINSHIELD||08-NOV-07||||||||||||Manufactures meters|102|MANU +|hardya|NS1|Northern Supplies||08-NOV-07|||NSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the north of the UK|200|MKTP +|hardya|NS2|Extreme Northern Supplies||08-NOV-07|||ENSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the extreme north of the UK|201|MKTP +|hardya|WS1|Welsh Supplies||08-NOV-07|||WSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Wales|202|MKTP +|hardya|WS2|Welsh Supplies||08-NOV-07|||W2SUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Wales|203|MKTP +|hardya|CE1|Central Gas Supplies||08-NOV-07|||CGSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the Central region|204|MKTP +|hardya|CE2|Centre de Gas Supplies||08-NOV-07|||CDSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the Central region|205|MKTP +|hardya|LON|London Supplies||08-NOV-07|||LONSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to London|206|MKTP +|hardya|KER|Kernow Supplies||08-NOV-07|||KERSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Cornwall|207|MKTP +|hardya|BM|Bootiful Gas Supplies||08-NOV-07|||BGSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the East|208|MKTP +|hardya||National Grid||08-NOV-07||||||||||||Internal organization|300|IO +|hardya||National Grid Metering||08-NOV-07||||||||||||Internal organization|301|IO +|hardya||Customer Services||08-NOV-07||||||||||||Internal organization|302|IO +|hardya||Quotations||08-NOV-07||||||||||||Internal organization|303|IO +|hardya||||08-NOV-07|||||||hardya|OPEN|Andrew|Hardy|Mr|User|400|PERS +|hardya||||08-NOV-07|||||||priestj|OPEN|Jamie|Priest|Mr|User|401|PERS +|hardya||||08-NOV-07|||||||kanagasabapathy|OPEN|Dharshani|Kanagasabapathy||User|402|PERS +|hardya||||08-NOV-07|||||||mullend|OPEN|Matt|Mullen||User|403|PERS +|hardya||||08-NOV-07|||||||agent1|OPEN|Fred|Smith||User|404|PERS +|hardya||||08-NOV-07|||||||agent2|OPEN|Joe|Bloggs||User|405|PERS +|hardya||||08-NOV-07|||||||agent3|OPEN|Peter|Piper||User|406|PERS +|hardya||||08-NOV-07|||||||agent4|OPEN|Nigel|Normal||User|407|PERS +|hardya||||08-NOV-07|||||||agent5|OPEN|Norah|Batty||User|408|PERS +|hardya||||08-NOV-07|||||||cs1|OPEN|Henrietta|Helpful||User|409|PERS +|hardya||||08-NOV-07|||||||cs2|OPEN|Tommy|Atkins||User|410|PERS +|hardya||||08-NOV-07|||||||cs3|OPEN|Tracy|Beaker||User|411|PERS +|hardya||||08-NOV-07|||||||ic1|OPEN|Gareth|Thomas||User|412|PERS +|hardya||||08-NOV-07|||||||ic2|OPEN|Bhavesh|Singh||User|413|PERS +|hardya||||08-NOV-07|||||||ic3|OPEN|Dave|Smith||User|414|PERS diff --git a/Schema/InstallSeed.cmd b/Data/Seed/InstallSeed.cmd similarity index 100% rename from Schema/InstallSeed.cmd rename to Data/Seed/InstallSeed.cmd diff --git a/Schema/MESC.ctl b/Data/Seed/MESC.ctl similarity index 94% rename from Schema/MESC.ctl rename to Data/Seed/MESC.ctl index 8db90d9..7a073c1 100644 --- a/Schema/MESC.ctl +++ b/Data/Seed/MESC.ctl @@ -6,8 +6,8 @@ FIELDS TERMINATED BY '|' ( code ,qmax -,valid_for_existing_meter ,valid_for_new_meter +,valid_for_existing_meter ) BEGINDATA U16|12.8|YES|YES diff --git a/Schema/SVCPT.ctl b/Data/Seed/SVCPT.ctl similarity index 100% rename from Schema/SVCPT.ctl rename to Data/Seed/SVCPT.ctl diff --git a/Schema/alty.ctl b/Data/Seed/alty.ctl similarity index 100% rename from Schema/alty.ctl rename to Data/Seed/alty.ctl diff --git a/Schema/caca.ctl b/Data/Seed/caca.ctl similarity index 100% rename from Schema/caca.ctl rename to Data/Seed/caca.ctl diff --git a/Schema/caco.ctl b/Data/Seed/caco.ctl similarity index 100% rename from Schema/caco.ctl rename to Data/Seed/caco.ctl diff --git a/Schema/cnor.ctl b/Data/Seed/cnor.ctl similarity index 100% rename from Schema/cnor.ctl rename to Data/Seed/cnor.ctl diff --git a/Schema/cnty.ctl b/Data/Seed/cnty.ctl similarity index 100% rename from Schema/cnty.ctl rename to Data/Seed/cnty.ctl diff --git a/Schema/comt.ctl b/Data/Seed/comt.ctl similarity index 100% rename from Schema/comt.ctl rename to Data/Seed/comt.ctl diff --git a/Schema/delete_tables.sql b/Data/Seed/delete_tables.sql similarity index 100% rename from Schema/delete_tables.sql rename to Data/Seed/delete_tables.sql diff --git a/Schema/disable_constraints.sql b/Data/Seed/disable_constraints.sql similarity index 100% rename from Schema/disable_constraints.sql rename to Data/Seed/disable_constraints.sql diff --git a/Schema/enable_constraints.sql b/Data/Seed/enable_constraints.sql similarity index 100% rename from Schema/enable_constraints.sql rename to Data/Seed/enable_constraints.sql diff --git a/Schema/enrt.ctl b/Data/Seed/enrt.ctl similarity index 100% rename from Schema/enrt.ctl rename to Data/Seed/enrt.ctl diff --git a/Schema/enst.ctl b/Data/Seed/enst.ctl similarity index 100% rename from Schema/enst.ctl rename to Data/Seed/enst.ctl diff --git a/Schema/enty.ctl b/Data/Seed/enty.ctl similarity index 100% rename from Schema/enty.ctl rename to Data/Seed/enty.ctl diff --git a/Schema/fity.ctl b/Data/Seed/fity.ctl similarity index 100% rename from Schema/fity.ctl rename to Data/Seed/fity.ctl diff --git a/Schema/hoty.ctl b/Data/Seed/hoty.ctl similarity index 100% rename from Schema/hoty.ctl rename to Data/Seed/hoty.ctl diff --git a/Schema/mety.ctl b/Data/Seed/mety.ctl similarity index 100% rename from Schema/mety.ctl rename to Data/Seed/mety.ctl diff --git a/Schema/part.ctl b/Data/Seed/part.ctl similarity index 100% rename from Schema/part.ctl rename to Data/Seed/part.ctl diff --git a/Schema/pcmrt.ctl b/Data/Seed/pcmrt.ctl similarity index 100% rename from Schema/pcmrt.ctl rename to Data/Seed/pcmrt.ctl diff --git a/Schema/prt.ctl b/Data/Seed/prt.ctl similarity index 100% rename from Schema/prt.ctl rename to Data/Seed/prt.ctl diff --git a/Schema/prtp.ctl b/Data/Seed/prtp.ctl similarity index 100% rename from Schema/prtp.ctl rename to Data/Seed/prtp.ctl diff --git a/Schema/qurt.ctl b/Data/Seed/qurt.ctl similarity index 100% rename from Schema/qurt.ctl rename to Data/Seed/qurt.ctl diff --git a/Schema/qust.ctl b/Data/Seed/qust.ctl similarity index 100% rename from Schema/qust.ctl rename to Data/Seed/qust.ctl diff --git a/Schema/rety.ctl b/Data/Seed/rety.ctl similarity index 100% rename from Schema/rety.ctl rename to Data/Seed/rety.ctl diff --git a/Schema/rvty.ctl b/Data/Seed/rvty.ctl similarity index 100% rename from Schema/rvty.ctl rename to Data/Seed/rvty.ctl diff --git a/Schema/slty.ctl b/Data/Seed/slty.ctl similarity index 100% rename from Schema/slty.ctl rename to Data/Seed/slty.ctl diff --git a/Schema/slva.ctl b/Data/Seed/slva.ctl similarity index 100% rename from Schema/slva.ctl rename to Data/Seed/slva.ctl diff --git a/Schema/svcp.ctl b/Data/Seed/svcp.ctl similarity index 100% rename from Schema/svcp.ctl rename to Data/Seed/svcp.ctl diff --git a/InstallMIP.cmd b/InstallMIP.cmd new file mode 100644 index 0000000..6e01cd9 --- /dev/null +++ b/InstallMIP.cmd @@ -0,0 +1,33 @@ +@echo off + +if "%1"=="" goto :usage +if "%2"=="" goto :usage +if "%3"=="" goto :usage +if "%4"=="" goto :usage +if "%5"=="" goto :usage + +@echo Install Schema +sqlplus /nolog @Schema\InstallMIP %1 %2 %3 %4 %5 + + +@echo Install Modules +sqlplus %3/%4@%5 @Modules\Modules.sql + + +cd Data\Seed +call InstallSeed %3/%4@%5 +cd ..\.. + + +cd Data\Demo +call InstallDemoData %3/%4@%5 +cd ..\.. + +goto :done + +:usage + +echo usage InstallMIP sys_name sys_password app_name app_password db_connect_string + + +:done diff --git a/Modules/Modules.sql b/Modules/Modules.sql new file mode 100644 index 0000000..a92a94f --- /dev/null +++ b/Modules/Modules.sql @@ -0,0 +1,7 @@ +set scan off +set define off + +@@mip_files.pck +@@mip_security.pck + +exit \ No newline at end of file diff --git a/Modules/mip_security.pck b/Modules/mip_security.pck new file mode 100644 index 0000000..b774a70 --- /dev/null +++ b/Modules/mip_security.pck @@ -0,0 +1,190 @@ +CREATE OR REPLACE PACKAGE mip_security AS + --PROCEDURE add_user(p_username IN VARCHAR2, p_password IN VARCHAR2); + + PROCEDURE login(p_uname IN VARCHAR2 + ,p_password IN VARCHAR2 + ,p_session_id IN VARCHAR2 + ,p_flow_page IN VARCHAR2); + + FUNCTION get_hash(p_username IN VARCHAR2 + ,p_password IN VARCHAR2) RETURN VARCHAR2; + + PROCEDURE valid_user(p_username IN VARCHAR2 + ,p_password IN VARCHAR2); + + FUNCTION valid_user(p_username IN VARCHAR2 + ,p_password IN VARCHAR2) RETURN BOOLEAN; + + FUNCTION user_screen(p_username IN VARCHAR2) RETURN BOOLEAN; + + FUNCTION admin_screen(p_username IN VARCHAR2) RETURN BOOLEAN; + + -- check to see whether the username has a role that allows + -- access to the given page and, optionally, the given item + -- + -- absence of the page or item from the access controls table + -- infers that access to the page and item is always allowed + FUNCTION access_allowed(p_username IN VARCHAR2 + ,p_page_number IN NUMBER + ,p_item_name IN VARCHAR2 DEFAULT NULL) + RETURN BOOLEAN; + +END mip_security; +/ +CREATE OR REPLACE PACKAGE BODY mip_security AS + PROCEDURE login(p_uname IN VARCHAR2 + ,p_password IN VARCHAR2 + ,p_session_id IN VARCHAR2 + ,p_flow_page IN VARCHAR2) IS + BEGIN + wwv_flow_custom_auth_std.login(p_uname => p_uname + ,p_password => p_password + ,p_session_id => p_session_id + ,p_flow_page => p_flow_page || ':' || 1); + + EXCEPTION + WHEN OTHERS THEN + RAISE; + END login; + + FUNCTION get_hash(p_username IN VARCHAR2 + ,p_password IN VARCHAR2) RETURN VARCHAR2 AS + BEGIN + RETURN dbms_obfuscation_toolkit.md5(input_string => upper(p_username) || '/' || + upper(p_password)); + END get_hash; + + /* + updates + MM - 22-Oct-2007 + changed the table to use to be the MIP parties table + */ + + PROCEDURE valid_user(p_username IN VARCHAR2 + ,p_password IN VARCHAR2) AS + l_password_created_on DATE; + BEGIN + + SELECT created_on + INTO l_password_created_on + FROM (SELECT pwd.prty_id + ,pwd.password_hash + ,MAX(pwd.created_on) over(PARTITION BY pwd.prty_id) AS latest_pwd_date + ,pwd.created_on + FROM passwords pwd + ,parties prty + WHERE prty.username = p_username + AND pwd.prty_id = prty.id) pwd + WHERE pwd.created_on = pwd.latest_pwd_date + AND pwd.password_hash = get_hash(p_username + ,p_password); + + EXCEPTION + WHEN no_data_found THEN + raise_application_error(-20000 + ,'Invalid username / password.'); + END valid_user; + + FUNCTION valid_user(p_username IN VARCHAR2 + ,p_password IN VARCHAR2) RETURN BOOLEAN AS + BEGIN + valid_user(p_username + ,p_password); + RETURN TRUE; + EXCEPTION + WHEN OTHERS THEN + RETURN FALSE; + END valid_user; + + FUNCTION access_allowed(p_username IN VARCHAR2 + ,p_page_number IN NUMBER + ,p_item_name IN VARCHAR2 DEFAULT NULL) + RETURN BOOLEAN IS + l_access_allowed VARCHAR2(3); + BEGIN + -- check to see whether the username has a role that allows + -- access to the given page and, optionally, the given item + -- + -- if null is returned from the query, it implies that there + -- is no access control against the given page and item + + IF p_page_number IN (101, 500) THEN + RETURN TRUE; + END IF; + SELECT access_allowed + INTO l_access_allowed + FROM (SELECT accl.page_number + ,accl.rt_code + ,parl.rt_code + ,CASE + WHEN accl.rt_code IS NULL THEN + 'YES' + WHEN accl.rt_code = parl.rt_code THEN + 'YES' + ELSE + 'NO' + END access_allowed + FROM (SELECT prty.username + ,rt_code + FROM parties prty + ,party_roles parl + WHERE parl.prty_id = prty.id + AND upper(prty.username) = upper(p_username)) parl + ,access_controls accl + WHERE accl.rt_code = parl.rt_code(+) + AND accl.page_number = p_page_number + AND (upper(nvl(accl.item + ,'NOCONTROL')) = + upper(nvl(p_item_name + ,nvl(accl.item + ,'NOCONTROL')))) + ORDER BY parl.rt_code) + WHERE rownum < 2; + + IF nvl(l_access_allowed + ,'YES') = 'YES' THEN + RETURN TRUE; + ELSE + RETURN FALSE; + END IF; + + EXCEPTION + WHEN no_data_found THEN + raise_application_error(-20000 + ,'Application Error: Item Name ' || + p_item_name || ' for page ' || p_page_number || + ' is missing from the ACCESS_CONTROLS table'); + END access_allowed; + + FUNCTION user_screen(p_username IN VARCHAR2) RETURN BOOLEAN AS + v_dummy VARCHAR2(1); + BEGIN + SELECT '1' + INTO v_dummy + FROM parties au + WHERE upper(username) = upper(p_username); + --AND upper(au.role) IN ('ADMIN', 'USER'); + + RETURN TRUE; + EXCEPTION + WHEN OTHERS THEN + RETURN FALSE; + END user_screen; + + FUNCTION admin_screen(p_username IN VARCHAR2) RETURN BOOLEAN AS + v_dummy VARCHAR2(1); + BEGIN + SELECT '1' + INTO v_dummy + FROM parties au + WHERE upper(username) = upper(p_username); + --AND upper(au.role) = 'ADMIN'; + + RETURN TRUE; + EXCEPTION + WHEN OTHERS THEN + RETURN FALSE; + END admin_screen; + +END mip_security; +/ diff --git a/Schema/InstallMIP.cmd b/Schema/InstallMIP.cmd index 54c19a7..ef5732e 100644 --- a/Schema/InstallMIP.cmd +++ b/Schema/InstallMIP.cmd @@ -8,8 +8,6 @@ if "%5"=="" goto :usage sqlplus /nolog @InstallMIP %1 %2 %3 %4 %5 -InstallSeed %3/%4@%5 - goto :done :usage diff --git a/Schema/InstallMIP.sql b/Schema/InstallMIP.sql index c0edb9d..2ce7984 100644 --- a/Schema/InstallMIP.sql +++ b/Schema/InstallMIP.sql @@ -6,6 +6,6 @@ grant connect, resource to &3 identified by &4; connect &3/&4@&5 -@mip +@@mip exit \ No newline at end of file diff --git a/Schema/mip.con b/Schema/mip.con index 1a94b9d..33352a5 100644 --- a/Schema/mip.con +++ b/Schema/mip.con @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.con -- --- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18 PROMPT Creating Primary Key on 'REGULATORS' ALTER TABLE REGULATORS @@ -176,6 +176,13 @@ ALTER TABLE ROLE_TYPES (CODE)) / +PROMPT Creating Primary Key on 'PASSWORDS' +ALTER TABLE PASSWORDS + ADD (CONSTRAINT PWD_PK PRIMARY KEY + (PRTY_ID + ,CREATED_ON)) +/ + PROMPT Creating Primary Key on 'ASSET_LOCATION_TYPES' ALTER TABLE ASSET_LOCATION_TYPES ADD (CONSTRAINT ALTY_PK PRIMARY KEY @@ -220,6 +227,12 @@ ALTER TABLE ENQUIRY_ROLES ,RT_CODE)) / +PROMPT Creating Primary Key on 'ACCESS_CONTROLS' +ALTER TABLE ACCESS_CONTROLS + ADD (CONSTRAINT ACCL_PK PRIMARY KEY + (ID)) +/ + PROMPT Creating Primary Key on 'ENQUIRIES' ALTER TABLE ENQUIRIES ADD (CONSTRAINT ENQU_PK PRIMARY KEY @@ -302,20 +315,26 @@ ALTER TABLE PARTY_ROLES / +PROMPT Creating Unique Key on 'COSTS' +ALTER TABLE COSTS + ADD (CONSTRAINT COST_AIC0_UK UNIQUE + (AICO_CODE)) +/ + PROMPT Creating Check Constraint on 'METER_SIZE_CODES' ALTER TABLE METER_SIZE_CODES - ADD (CONSTRAINT AVCON_1194534541_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'METER_SIZE_CODES' ALTER TABLE METER_SIZE_CODES - ADD (CONSTRAINT AVCON_1194534541_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'COSTS' ALTER TABLE COSTS - ADD (CONSTRAINT AVCON_1194534541_COST__000 CHECK (COST_TYPE IN ('COST', 'BACO', 'HOCO', 'MECO', 'MOCO'))) + ADD (CONSTRAINT AVCON_1194861873_COST__000 CHECK (COST_TYPE IN ('HOCO', 'BACO', 'COST', 'AICO', 'MOCO', 'MECO'))) / PROMPT Creating Check Constraint on 'PARTY_RELATIONSHIPS' @@ -327,89 +346,84 @@ to_parl_rt_code = to_prtp_rt_code)) PROMPT Creating Check Constraint on 'QUOTES' ALTER TABLE QUOTES - ADD (CONSTRAINT AVCON_1194534541_QUTE__000 CHECK (QUTE_TYPE IN ('QUTE', 'SQ', 'AQ', 'MQ'))) + ADD (CONSTRAINT AVCON_1194861873_QUTE__000 CHECK (QUTE_TYPE IN ('QUTE', 'SQ', 'AQ', 'MQ'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1194534541_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) + ADD (CONSTRAINT AVCON_1194861873_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED'))) / PROMPT Creating Check Constraint on 'PARTIES' ALTER TABLE PARTIES - ADD (CONSTRAINT AVCON_1194534541_PRTY__000 CHECK (PRTY_TYPE + ADD (CONSTRAINT AVCON_1194861873_PRTY__000 CHECK (PRTY_TYPE IN ('PRTY', 'IO', 'EO', 'MKTP', 'PERS', 'MANU', 'NEMP', 'EMP', 'ORG' ))) / PROMPT Creating Check Constraint on 'ROLE_TYPES' ALTER TABLE ROLE_TYPES - ADD (CONSTRAINT AVCON_1194534541_RT_TY_000 CHECK (RT_TYPE IN ('PCMRT', 'PART', 'QURT', 'PRT', 'RT', 'ENRT'))) + ADD (CONSTRAINT AVCON_1194861873_RT_TY_000 CHECK (RT_TYPE IN ('ENRT', 'QURT', 'PRT', 'PCMRT', 'PART', 'RT'))) / - + PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) + ADD (CONSTRAINT AVCON_1194861873_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_BYPAS_000 CHECK (BYPASS_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_LOGGE_000 CHECK (LOGGER_REQUIRED IN ('YES', 'NO'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_LOGGE_000 CHECK (LOGGER_REQUIRED IN ('YES', 'NO'))) + ADD (CONSTRAINT AVCON_1194861873_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating'))) + ADD (CONSTRAINT AVCON_1194861873_EXIST_000 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) / PROMPT Creating Check Constraint on 'ENQUIRIES' ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_EXIST_000 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C'))) -/ - -PROMPT Creating Check Constraint on 'ENQUIRIES' -ALTER TABLE ENQUIRIES - ADD (CONSTRAINT AVCON_1194534541_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) + ADD (CONSTRAINT AVCON_1194861873_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D'))) / @@ -666,6 +680,13 @@ ALTER TABLE QUOTE_ITEMS ADD (CONSTRAINT (ID)) / +PROMPT Creating Foreign Key on 'PASSWORDS' +ALTER TABLE PASSWORDS ADD (CONSTRAINT + PWD_PRTY_FK FOREIGN KEY + (PRTY_ID) REFERENCES PARTIES + (ID)) +/ + PROMPT Creating Foreign Key on 'METERS' ALTER TABLE METERS ADD (CONSTRAINT METR_DRWG_FK FOREIGN KEY @@ -722,9 +743,16 @@ ALTER TABLE ENQUIRY_ROLES ADD (CONSTRAINT (CODE)) / +PROMPT Creating Foreign Key on 'ACCESS_CONTROLS' +ALTER TABLE ACCESS_CONTROLS ADD (CONSTRAINT + ACCL_RT_FK FOREIGN KEY + (RT_CODE) REFERENCES ROLE_TYPES + (CODE)) +/ + PROMPT Creating Foreign Key on 'ENQUIRIES' ALTER TABLE ENQUIRIES ADD (CONSTRAINT - ENQU_COMT_CONSUMER_FK FOREIGN KEY + ENQU_COMT_CONS_FK FOREIGN KEY (CONSUMER_COMT_CODE) REFERENCES CONTACT_MECHANISM_TYPES (CODE)) / @@ -752,7 +780,7 @@ ALTER TABLE ENQUIRIES ADD (CONSTRAINT PROMPT Creating Foreign Key on 'ENQUIRIES' ALTER TABLE ENQUIRIES ADD (CONSTRAINT - ENQU_COMT_ALT_CONSUMER_FK FOREIGN KEY + ENQU_COMT_ALT_CONS_FK FOREIGN KEY (ALT_CONSUMER_COMT_CODE) REFERENCES CONTACT_MECHANISM_TYPES (CODE)) / diff --git a/Schema/mip.ind b/Schema/mip.ind index fda8a09..1055243 100644 --- a/Schema/mip.ind +++ b/Schema/mip.ind @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.ind -- --- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18 PROMPT Creating Index 'REGU_RETY_FK_I' @@ -179,6 +179,11 @@ CREATE INDEX QUIT_HOU_FK_I ON QUOTE_ITEMS (HOU_CODE) / +PROMPT Creating Index 'PWD_PRTY_FK_I' +CREATE INDEX PWD_PRTY_FK_I ON PASSWORDS + (PRTY_ID) +/ + PROMPT Creating Index 'METR_METY_FK_I' CREATE INDEX METR_METY_FK_I ON METERS (METY_CODE) @@ -219,13 +224,18 @@ CREATE INDEX ENRO_ENQU_FK_I ON ENQUIRY_ROLES (ENQU_CODE) / +PROMPT Creating Index 'ACCL_RT_FK_I' +CREATE INDEX ACCL_RT_FK_I ON ACCESS_CONTROLS + (RT_CODE) +/ + PROMPT Creating Index 'ENQU_METY_FK_I' CREATE INDEX ENQU_METY_FK_I ON ENQUIRIES (METY_CODE) / -PROMPT Creating Index 'ENQU_MESC_REQUIRED_FK_I' -CREATE INDEX ENQU_MESC_REQUIRED_FK_I ON ENQUIRIES +PROMPT Creating Index 'ENQU_MESC_FK_I' +CREATE INDEX ENQU_MESC_FK_I ON ENQUIRIES (REQUIRED_MESC_CODE) / @@ -239,8 +249,8 @@ CREATE INDEX ENQU_SVCP_FK_I ON ENQUIRIES (EXISTING_SVCP_CODE) / -PROMPT Creating Index 'ENQU_COMT_CONSUMER_FK_I' -CREATE INDEX ENQU_COMT_CONSUMER_FK_I ON ENQUIRIES +PROMPT Creating Index 'ENQU_COMT_CONS_FK_I' +CREATE INDEX ENQU_COMT_CONS_FK_I ON ENQUIRIES (CONSUMER_COMT_CODE) / @@ -259,13 +269,13 @@ CREATE INDEX ENQU_ALTY_FK_I ON ENQUIRIES (ALTY_CODE) / -PROMPT Creating Index 'ENQU_COMT_AGENT_FK_I' -CREATE INDEX ENQU_COMT_AGENT_FK_I ON ENQUIRIES +PROMPT Creating Index 'ENQU_COMT_FK_AGENT_I' +CREATE INDEX ENQU_COMT_FK_AGENT_I ON ENQUIRIES (AGENT_COMT_CODE) / -PROMPT Creating Index 'ENQU_COMT_FK_I' -CREATE INDEX ENQU_COMT_FK_I ON ENQUIRIES +PROMPT Creating Index 'ENQU_COMT_ALT_CONS_FK_I' +CREATE INDEX ENQU_COMT_ALT_CONS_FK_I ON ENQUIRIES (ALT_CONSUMER_COMT_CODE) / diff --git a/Schema/mip.sql b/Schema/mip.sql index e1eb25e..8c3570f 100644 --- a/Schema/mip.sql +++ b/Schema/mip.sql @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.sql -- --- Generated for Oracle 10g on Thu Nov 08 15:09:02 2007 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Nov 12 10:04:34 2007 by Server Generator 10.1.2.6.18 SPOOL mip.lst diff --git a/Schema/mip.sqs b/Schema/mip.sqs index 6b03449..e7bd5aa 100644 --- a/Schema/mip.sqs +++ b/Schema/mip.sqs @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.sqs -- --- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18 PROMPT Creating Sequence 'FLTR_SEQ' CREATE SEQUENCE FLTR_SEQ @@ -30,6 +30,13 @@ CREATE SEQUENCE CNOR_SEQ NOCYCLE / +PROMPT Creating Sequence 'ACCL_SEQ' +CREATE SEQUENCE ACCL_SEQ + NOMAXVALUE + NOMINVALUE + NOCYCLE +/ + PROMPT Creating Sequence 'QUTE_SEQ' CREATE SEQUENCE QUTE_SEQ NOMAXVALUE diff --git a/Schema/mip.tab b/Schema/mip.tab index 82a3db2..0f5008a 100644 --- a/Schema/mip.tab +++ b/Schema/mip.tab @@ -1,6 +1,6 @@ -- C:\Andy\svn\WEBMIP\Schema\mip.tab -- --- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18 +-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18 @@ -77,14 +77,16 @@ CREATE TABLE METER_SIZE_CODES (CODE VARCHAR2(80) NOT NULL ,DESCRIPTION VARCHAR2(80) ,QMAX NUMBER NOT NULL - ,VALID_FOR_EXISTING_METER VARCHAR2(240) NOT NULL - ,VALID_FOR_NEW_METER VARCHAR2(240) NOT NULL + ,VALID_FOR_EXISTING_METER VARCHAR2(3) NOT NULL + ,VALID_FOR_NEW_METER VARCHAR2(3) NOT NULL ) / PROMPT Creating Table 'COSTS' CREATE TABLE COSTS - (COST_PRICE NUMBER(*,2) + (AICO_CODE VARCHAR2(80) + ,COST_PRICE NUMBER(*,2) + ,DESCRIPTION VARCHAR2(80) ,VALID_FROM DATE NOT NULL ,REGI_CODE VARCHAR2(80) ,BAS_CODE VARCHAR2(80) @@ -229,7 +231,6 @@ CREATE TABLE PARTIES ,GT_7B_CONTRACT_REF VARCHAR2(25) ,ADVERSARIAL_CONTRACT_REF VARCHAR2(25) ,USERNAME VARCHAR2(80) - ,PASSWORD_HASH VARCHAR2(255) ,STATUS VARCHAR2(6) ,FIRST_NAME VARCHAR2(80) ,LAST_NAME VARCHAR2(80) @@ -267,6 +268,15 @@ CREATE TABLE ROLE_TYPES ) / +PROMPT Creating Table 'PASSWORDS' +CREATE TABLE PASSWORDS + (PRTY_ID NUMBER(*,0) NOT NULL + ,PASSWORD_HASH VARCHAR2(255) NOT NULL + ,CREATED_ON DATE NOT NULL + ,CREATED_BY NUMBER + ) +/ + PROMPT Creating Table 'ASSET_LOCATION_TYPES' CREATE TABLE ASSET_LOCATION_TYPES (CODE VARCHAR2(80) NOT NULL @@ -338,6 +348,15 @@ CREATE TABLE ENQUIRY_ROLES ) / +PROMPT Creating Table 'ACCESS_CONTROLS' +CREATE TABLE ACCESS_CONTROLS + (PAGE_NUMBER NUMBER NOT NULL + ,RT_CODE VARCHAR2(80) + ,ITEM VARCHAR2(80) + ,ID NUMBER(*,0) NOT NULL + ) +/ + PROMPT Creating Table 'ENQUIRIES' CREATE TABLE ENQUIRIES (CODE VARCHAR2(80) NOT NULL @@ -359,9 +378,9 @@ CREATE TABLE ENQUIRIES ,REQUIRED_IP_DETAILS VARCHAR2(250) ,REQUIRED_IP_MBAR NUMBER ,OUTLET_PRESSURE NUMBER - ,HOUSING_REQUIRED VARCHAR2(240) - ,BASE_REQUIRED VARCHAR2(240) - ,TWIN_STREAM_REQUIRED VARCHAR2(240) + ,HOUSING_REQUIRED VARCHAR2(3) + ,BASE_REQUIRED VARCHAR2(3) + ,TWIN_STREAM_REQUIRED VARCHAR2(3) ,QMAX NUMBER ,EXISTING_METER_MODEL VARCHAR2(10) ,OTHER_INFORMATION VARCHAR2(250) @@ -385,25 +404,25 @@ CREATE TABLE ENQUIRIES ,ACCESS_ADDITIONAL VARCHAR2(210) ,MPRN_ALT VARCHAR2(250) ,ANNUAL_QUANTITY NUMBER - ,DOWNSTREAM_BOOSTER_OR_COMPRESS VARCHAR2(240) + ,DOWNSTREAM_BOOSTER_OR_COMPRESS VARCHAR2(3) ,INDICATIVE_DATE DATE ,INDICATIVE_TIME VARCHAR2(2) DEFAULT 'DY' ,OTHER_PROJECT_REFERENCE VARCHAR2(50) - ,CONVERTOR_REQUIRED VARCHAR2(240) - ,AMR_REQUIRED VARCHAR2(240) - ,EMS_REQUIRED VARCHAR2(240) - ,BYPASS_REQUIRED VARCHAR2(240) - ,LOGGER_REQUIRED VARCHAR2(240) + ,CONVERTOR_REQUIRED VARCHAR2(3) + ,AMR_REQUIRED VARCHAR2(3) + ,EMS_REQUIRED VARCHAR2(3) + ,BYPASS_REQUIRED VARCHAR2(40) + ,LOGGER_REQUIRED VARCHAR2(3) ,QMIN NUMBER ,LOAD_CONTROL_TYPE VARCHAR2(10) ,EXISTING_METER_SERIAL_NO VARCHAR2(14) ,EXISTING_METER_OWNER VARCHAR2(1) ,EXISTING_METER_ASSET_PROVIDER VARCHAR2(210) ,MARKET_SECTOR_CODE VARCHAR2(1) DEFAULT 'I' + ,JOB_DESCRIPTION VARCHAR2(500) ,CREATED_BY NUMBER NOT NULL ,UPDATED_BY NUMBER ,UPDATED_ON DATE - ,METER_SIZE VARCHAR2(240) ) /