home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / ib / setups / intrabld / data.z / SMUADMIN.JFM < prev    next >
Text File  |  1996-12-11  |  20KB  |  641 lines

  1. /****************************************************************************\
  2. *                                                                            *
  3. * SmUAdmin.jfm  --  Security User Administration Form                        *
  4. *                                                                            *
  5. * This form is part of the security administration prebuilt business         *
  6. * solution. This is the user adminstration form. It allows you to define     *
  7. * new groups and update existing users. This form is called from the         *
  8. * SmAdmin form.                                                              *
  9. *                                                                            *
  10. * Dependencies:  secur21.gif                                                 *
  11. *                                                                            *
  12. * Updated 11/13/96 by IntraBuilder Samples Group                             *
  13. * $Revision:   1.10  $                                                        *
  14. *                                                                            *
  15. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  16. *                                                                            *
  17. \****************************************************************************/
  18. #include "security.h"
  19. // {End Header} Do not remove this comment//
  20. // Generated on 11/13/96
  21. //
  22. var f = new smuadminForm();
  23. f.open();
  24. class smuadminForm extends SecurityForm from "SMADMIN.JCF" {
  25.    _sys.scripts.load(_sys.env.home() + "APPS\\SHARED\\CONTROLS.CC")
  26.    with (this) {
  27.       preRender = class::Form_preRender;
  28.       onServerLoad = class::Form_onServerLoad;
  29.       color = "fff7c4";
  30.       height = 14.6667;
  31.       left = 0;
  32.       top = 0;
  33.       width = 74;
  34.       title = "User Administration";
  35.    }
  36.  
  37.  
  38.    with (this.rule1 = new Rule(this)){
  39.       top = 4;
  40.       size = 2;
  41.       right = 74;
  42.       pageno = 0;
  43.    }
  44.  
  45.  
  46.    with (this.rule2 = new Rule(this)){
  47.       top = 24;
  48.       size = 2;
  49.       right = 74;
  50.       pageno = 0;
  51.    }
  52.  
  53.  
  54.    with (this.actionHTML = new HTML(this)){
  55.       height = 1;
  56.       left = 12;
  57.       top = 2;
  58.       width = 30;
  59.       color = "400040";
  60.       text = "Update Existing User";
  61.    }
  62.  
  63.  
  64.    with (this.saveButton = new Button(this)){
  65.       onServerClick = class::saveButton_onServerClick;
  66.       left = 42;
  67.       top = 2;
  68.       width = 14;
  69.       text = "Save";
  70.    }
  71.  
  72.  
  73.    with (this.exitButton = new Button(this)){
  74.       onServerClick = class::exitButton_onServerClick;
  75.       left = 58;
  76.       top = 2;
  77.       width = 14;
  78.       text = " Exit ";
  79.    }
  80.  
  81.  
  82.    with (this.userHTML = new HTML(this)){
  83.       height = 1;
  84.       top = 7;
  85.       width = 18;
  86.       color = "400040";
  87.       alignVertical = 1;
  88.       text = "User name";
  89.    }
  90.  
  91.  
  92.    with (this.usernameHTML = new HTML(this)){
  93.       height = 1;
  94.       left = 18;
  95.       top = 7;
  96.       width = 18;
  97.       color = "black";
  98.       alignVertical = 1;
  99.       text = "username";
  100.    }
  101.  
  102.  
  103.    with (this.usernameText = new Text(this)){
  104.       visible = false;
  105.       left = 18;
  106.       top = 7;
  107.       width = 18;
  108.       value = "username";
  109.    }
  110.  
  111.  
  112.    with (this.createHTML = new HTML(this)){
  113.       height = 1;
  114.       top = 5;
  115.       width = 18;
  116.       color = "400040";
  117.       alignVertical = 1;
  118.       text = "Created";
  119.    }
  120.  
  121.  
  122.    with (this.createdHTML = new HTML(this)){
  123.       height = 1;
  124.       left = 18;
  125.       top = 5;
  126.       width = 18;
  127.       color = "black";
  128.       alignVertical = 1;
  129.       text = "  /  /       :  :  ";
  130.    }
  131.  
  132.  
  133.    with (this.lastloginHTML = new HTML(this)){
  134.       height = 1;
  135.       top = 6;
  136.       width = 18;
  137.       color = "400040";
  138.       alignVertical = 1;
  139.       text = "Last login";
  140.    }
  141.  
  142.  
  143.    with (this.loginHTML = new HTML(this)){
  144.       height = 1;
  145.       left = 18;
  146.       top = 6;
  147.       width = 18;
  148.       color = "black";
  149.       alignVertical = 1;
  150.       text = "  /  /       :  :  ";
  151.    }
  152.  
  153.  
  154.    with (this.descriptionHTML = new HTML(this)){
  155.       height = 1;
  156.       top = 8;
  157.       width = 18;
  158.       color = "400040";
  159.       alignVertical = 1;
  160.       text = "Description";
  161.    }
  162.  
  163.  
  164.    with (this.descriptionText = new Text(this)){
  165.       left = 18;
  166.       top = 8;
  167.       width = 44;
  168.       value = "description";
  169.    }
  170.  
  171.  
  172.    with (this.disableCheck = new CheckBox(this)){
  173.       height = 1;
  174.       top = 11.5;
  175.       width = 74;
  176.       text = "Account disabled";
  177.       checked = false;
  178.    }
  179.  
  180.  
  181.    with (this.lockoutCheck = new CheckBox(this)){
  182.       height = 1;
  183.       top = 12.5;
  184.       width = 74;
  185.       text = "Account locked out";
  186.       checked = false;
  187.    }
  188.  
  189.  
  190.    with (this.passwordHTML = new HTML(this)){
  191.       height = 1;
  192.       top = 9;
  193.       width = 18;
  194.       color = "400040";
  195.       alignVertical = 1;
  196.       text = "Password  ";
  197.    }
  198.  
  199.  
  200.    with (this.passwordText = new Password(this)){
  201.       left = 18;
  202.       top = 9;
  203.       width = 18;
  204.       value = "";
  205.    }
  206.  
  207.  
  208.    with (this.confirmHTML = new HTML(this)){
  209.       height = 1;
  210.       top = 10;
  211.       width = 18;
  212.       color = "400040";
  213.       alignVertical = 1;
  214.       text = "Confirm password  ";
  215.    }
  216.  
  217.  
  218.    with (this.confirmText = new Password(this)){
  219.       left = 18;
  220.       top = 10;
  221.       width = 18;
  222.       value = "";
  223.    }
  224.  
  225.  
  226.    with (this.inGroupHTML = new HTML(this)){
  227.       height = 1;
  228.       top = 14;
  229.       width = 24;
  230.       color = "400040";
  231.       text = "Member of group";
  232.    }
  233.  
  234.  
  235.    with (this.outGroupHTML = new HTML(this)){
  236.       height = 1;
  237.       left = 48;
  238.       top = 14;
  239.       width = 24;
  240.       color = "400040";
  241.       text = "Not member of group";
  242.    }
  243.  
  244.  
  245.    with (this.inGroupSelect = new ListBox(this)){
  246.       height = 3.5;
  247.       top = 15;
  248.       width = 24;
  249.    }
  250.  
  251.  
  252.    with (this.addGroupButton = new Button(this)){
  253.       onServerClick = class::addGroupButton_onServerClick;
  254.       left = 26;
  255.       top = 15;
  256.       width = 20;
  257.       text = "Add Group";
  258.    }
  259.  
  260.  
  261.    with (this.removeGroupButton = new Button(this)){
  262.       onServerClick = class::removeGroupButton_onServerClick;
  263.       left = 26;
  264.       top = 16.5;
  265.       width = 20;
  266.       text = "Remove Group";
  267.    }
  268.  
  269.  
  270.    with (this.outGroupSelect = new ListBox(this)){
  271.       height = 3.5;
  272.       left = 48;
  273.       top = 15;
  274.       width = 24;
  275.    }
  276.  
  277.  
  278.    with (this.inResourceHTML = new HTML(this)){
  279.       height = 1;
  280.       top = 19;
  281.       width = 24;
  282.       color = "400040";
  283.       text = "May access resource";
  284.    }
  285.  
  286.  
  287.    with (this.outResourceHTML = new HTML(this)){
  288.       height = 1;
  289.       left = 48;
  290.       top = 19;
  291.       width = 24;
  292.       color = "400040";
  293.       text = "May not access resource";
  294.    }
  295.  
  296.  
  297.    with (this.inResourceSelect = new ListBox(this)){
  298.       height = 3.5;
  299.       top = 20;
  300.       width = 24;
  301.    }
  302.  
  303.  
  304.    with (this.addResourceButton = new Button(this)){
  305.       onServerClick = class::addResourceButton_onServerClick;
  306.       left = 26;
  307.       top = 20;
  308.       width = 20;
  309.       text = "Add Res.";
  310.    }
  311.  
  312.  
  313.    with (this.removeResourceButton = new Button(this)){
  314.       onServerClick = class::removeResourceButton_onServerCli;
  315.       left = 26;
  316.       top = 21.5;
  317.       width = 20;
  318.       text = "Remove Res.";
  319.    }
  320.  
  321.  
  322.    with (this.outResourceSelect = new ListBox(this)){
  323.       height = 3.5;
  324.       left = 48;
  325.       top = 20;
  326.       width = 24;
  327.    }
  328.  
  329.  
  330.    with (this.errorHTML = new HTML(this)){
  331.       height = 4;
  332.       left = 2;
  333.       top = 8;
  334.       width = 74;
  335.       color = "400040";
  336.       text = "Error loading user administration form. Notify system administrator.";
  337.       pageno = 2;
  338.    }
  339.  
  340.  
  341.    with (this.backButton = new Button(this)){
  342.       onServerClick = {;this.form.pageno = 1 ;this.form.Form_preRender(this.form)};
  343.       left = 2;
  344.       top = 14;
  345.       width = 20;
  346.       text = "Back";
  347.       pageno = 2;
  348.    }
  349.  
  350.  
  351.    with (this.GeneratedHTML1 = new GeneratedHTML(this)){
  352.       height = 1;
  353.       top = 24.5;
  354.       width = 74;
  355.       pageno = 0;
  356.    }
  357.  
  358.  
  359.    function Form_preRender( formRef )
  360.    {
  361.       var form = Form_preRender.arguments.length == 1 ? formRef : this;
  362.       //
  363.       // clear the password controls
  364.       //
  365.       form.passwordText.value = "";
  366.       form.confirmText.value  = "";
  367.    }
  368.  
  369.    function Form_onServerLoad()
  370.    {
  371.       try {
  372.          // 
  373.          // make sure that all the custom properties are set
  374.          //
  375.          var x = this.copyEntity?1:0;
  376.          var x = this.entity.name;
  377.          var x = this.security._admin;
  378.          var x = this.callingForm.title;
  379.          //
  380.          // set the action text
  381.          //
  382.          this.createNew = true;
  383.          if (this.entity.name == null)
  384.             this.actionHTML.text = "Create New User";
  385.          else if (this.copyEntity)
  386.             this.actionHTML.text = ("Copy " + this.entity.name + " To New User");
  387.          else {
  388.             this.createNew = false;
  389.             this.actionHTML.text = "Update Existing User";
  390.          }
  391.          //
  392.          // set the control values on this form
  393.          //
  394.          if ((this.entity.name == null) || (this.copyEntity)) {
  395.             this.usernameText.value = new StringEx().replicate(" ",20);
  396.             this.usernameText.visible = true;
  397.             this.usernameHTML.visible = false;
  398.          }
  399.          else {
  400.             this.usernameHTML.text = this.entity.name;
  401.             this.usernameHTML.visible = true;
  402.             this.usernameText.visible = false;
  403.          }
  404.          this.createdHTML.text = (this.entity.created == null) ?
  405.                                   "(new user)" : ("" + this.entity.created);
  406.          this.loginHTML.text = (this.entity.login == null) ?
  407.                                 "(no prior login)" : ("" + this.entity.login);
  408.          this.descriptionText.value = (this.entity.description == null) ?
  409.                                        new StringEx().replicate(" ",80) : 
  410.                                        this.entity.description;
  411.          this.disableCheck.checked = this.entity.disabled;
  412.          this.lockoutCheck.checked = this.entity.lockout;
  413.          // create arrays for the select controls
  414.          this.inGroup     = new Array();
  415.          this.outGroup    = new Array();
  416.          this.inResource  = new Array();
  417.          this.outResource = new Array();
  418.          // save original groups/resources for use in save
  419.          this.inGroupStart    = new Array();
  420.          this.inResourceStart = new Array();
  421.          var entity = "";
  422.          // build group lists
  423.          if (this.entity.name == null)
  424.             var inGroup = new AssocArray();
  425.          else
  426.             var inGroup = this.security.getAllGroups(this.entity.name, SM_ENTITY_USER);
  427.          var outGroup = this.security.getAllGroups();
  428.          // add all in groups to list
  429.          for (var i = 0; i<inGroup.count(); i++) {
  430.             entity = (i==0) ? inGroup.firstKey : inGroup.nextKey(entity);
  431.             this.inGroup.add(entity);
  432.             this.inGroupStart.add(entity);
  433.          }
  434.          this.inGroup.sort();
  435.          this.inGroupSelect.options = 'array this.inGroup';
  436.          // add groups to out list if they are not in in list
  437.          for (i = 0; i<outGroup.count(); i++) {
  438.             entity = (i==0) ? outGroup.firstKey : outGroup.nextKey(entity);
  439.             if (!inGroup.isKey(entity))
  440.                this.outGroup.add(entity);
  441.          }
  442.          this.outGroup.sort();
  443.          this.outGroupSelect.options = 'array this.outGroup';
  444.          // build resource lists
  445.          if (this.createNew)
  446.             var inResource = new AssocArray();
  447.          else
  448.             var inResource = this.security.getAllResources(this.entity.name, SM_ENTITY_USER);
  449.          var outResource = this.security.getAllResources();
  450.          // add all in resources to list
  451.          for (var i = 0; i<inResource.count(); i++) {
  452.             entity = (i==0) ? inResource.firstKey : inResource.nextKey(entity);
  453.             this.inResource.add(entity);
  454.             this.inResourceStart.add(entity);
  455.          }
  456.          this.inResource.sort();
  457.          this.inResourceSelect.options = 'array this.inResource';
  458.          // add resources to out list if they are not in in list
  459.          for (i = 0; i<outResource.count(); i++) {
  460.             entity = (i==0) ? outResource.firstKey : outResource.nextKey(entity);
  461.             if (!inResource.isKey(entity))
  462.                this.outResource.add(entity);
  463.          }
  464.          this.outResource.sort();
  465.          this.outResourceSelect.options = 'array this.outResource';
  466.       }
  467.       catch (Exception e) {
  468.          form.errorHTML.text = "Error loading user: " + e.message + " (" + e.code + ")";
  469.          this.pageno = 2;
  470.       }
  471.    }
  472.  
  473.    function saveButton_onServerClick()
  474.    {
  475.       var form = this.form;
  476.       try {
  477.          // have an exception ready
  478.          var error = new Exception();
  479.          error.message = "";
  480.          error.code = 0;
  481.          //
  482.          //  set the properties of the entity object
  483.          //
  484.          //  user name
  485.          if (form.createNew) {
  486.             var name = new StringEx(form.usernameText.value);
  487.             name.string = name.leftTrim();
  488.             name.string = name.rightTrim();
  489.             if (name.length == 0) {
  490.                error.message = "User name may not be blank";
  491.                throw error;
  492.             }
  493.             else
  494.                form.entity.name = name;
  495.          }
  496.          // password
  497.          if (form.passwordText.value != form.confirmText.value) {
  498.             error.message = "Password and confirmation do not match";
  499.             throw error;
  500.          }
  501.          if (form.passwordText.value == "********")
  502.             form.entity.password = null;
  503.          else
  504.             form.entity.password = form.passwordText.value;
  505.          // description
  506.          form.entity.description = form.descriptionText.value;
  507.          // disabled and lockout
  508.          form.entity.disabled = form.disableCheck.checked;
  509.          form.entity.lockout  = form.lockoutCheck.checked;
  510.          //
  511.          //  call create/update with entity object
  512.          //
  513.          if (form.createNew)
  514.             form.security.createUser(form.entity);
  515.          else
  516.             form.security.updateUser(form.entity);
  517.          //
  518.          //  assign group membership
  519.          //
  520.          for (var i = 0; i<form.inGroup.length; i++) {
  521.             if ((form.createNew) || (form.inGroupStart.scan(form.inGroup[i]) < 0))
  522.                form.security.assignGroupUser(form.inGroup[i],form.entity.name);
  523.          }
  524.          //
  525.          //  assign resource privileges
  526.          //
  527.          for (var i = 0; i<form.inResource.length; i++) {
  528.             if ((form.createNew) || (form.inResourceStart.scan(form.inResource[i]) < 0))
  529.                form.security.assignResourceUser(form.inResource[i],form.entity.name);
  530.          }
  531.          //
  532.          //  remove group memberships for existing users only
  533.          //
  534.          if (!form.createNew) {
  535.             for (var i = 0; i<form.inGroupStart.length; i++) {
  536.                if (form.inGroup.scan(form.inGroupStart[i]) < 0)
  537.                   form.security.unassignGroupUser(form.inGroupStart[i],form.entity.name);
  538.             }
  539.          }
  540.          //
  541.          //  remove resource privileges for existing users only
  542.          //
  543.          if (!form.createNew) {
  544.             for (var i = 0; i<form.inResourceStart.length; i++) {
  545.                if (form.inResource.scan(form.inResourceStart[i]) < 0)
  546.                   form.security.unassignResourceUser(form.inResourceStart[i],form.entity.name);
  547.             }
  548.          }
  549.          //
  550.          //  Successful change, no longer in createNew mode
  551.          //
  552.          if (form.createNew) {
  553.             form.createNew = false;
  554.             form.actionHTML.text = "Update Existing User";
  555.             form.usernameHTML.text = form.entity.name;
  556.             form.usernameHTML.visible = true;
  557.             form.usernameText.visible = false;
  558.          }
  559.          //
  560.          // current inXxxxx arrays become the inXxxxxStart arrays
  561.          //
  562.          form.inGroupStart    = new Array();
  563.          form.inResourceStart = new Array();
  564.          for (var i = 0; i<form.inGroup.length; i++)
  565.             form.inGroupStart.add(form.inGroup[i]);
  566.          for (var i = 0; i<form.inResource.length; i++)
  567.             form.inResourceStart.add(form.inResource[i]);
  568.          //
  569.          // reset the password controls
  570.          //
  571.          form.Form_preRender(form);
  572.       }
  573.       catch (Exception e) {
  574.          form.errorHTML.text = "Error saving user: " + e.message + " (" + e.code + ")";
  575.          form.pageno = 2;
  576.       }
  577.    }
  578.  
  579.    function exitButton_onServerClick()
  580.    {
  581.       try {
  582.          this.form.callingForm.open();
  583.          this.form.close();
  584.          this.form.release();
  585.       }
  586.       catch (Exception e) {
  587.          this.form.errorHTML.text = "Unable to return to calling form.";
  588.          this.form.pageno = 2;
  589.       }
  590.    }
  591.  
  592.    function addGroupButton_onServerClick()
  593.    {
  594.       if ((this.form.outGroupSelect.value.length > 0) && (this.form.outGroup.scan(this.form.outGroupSelect.value) >= 0)) {
  595.          this.form.inGroup.add(this.form.outGroupSelect.value);
  596.          this.form.inGroup.sort();
  597.          this.form.inGroupSelect.options = "array this.form.inGroup";
  598.          this.form.outGroup.delete(this.form.outGroup.scan(this.form.outGroupSelect.value));
  599.          this.form.outGroup.length -= 1;
  600.          this.form.outGroupSelect.options = "array this.form.outGroup";
  601.       }
  602.    }
  603.  
  604.    function removeGroupButton_onServerClick()
  605.    {
  606.       if ((this.form.inGroupSelect.value.length > 0) && (this.form.inGroup.scan(this.form.inGroupSelect.value) >= 0)) {
  607.          this.form.outGroup.add(this.form.inGroupSelect.value);
  608.          this.form.outGroup.sort();
  609.          this.form.outGroupSelect.options = "array this.form.outGroup";
  610.          this.form.inGroup.delete(this.form.inGroup.scan(this.form.inGroupSelect.value));
  611.          this.form.inGroup.length -= 1;
  612.          this.form.inGroupSelect.options  = "array this.form.inGroup";
  613.       }
  614.    }
  615.  
  616.    function addResourceButton_onServerClick()
  617.    {
  618.       if ((this.form.outResourceSelect.value.length > 0) && (this.form.outResource.scan(this.form.outResourceSelect.value) >= 0)) {
  619.          this.form.inResource.add(this.form.outResourceSelect.value);
  620.          this.form.inResource.sort();
  621.          this.form.inResourceSelect.options = "array this.form.inResource";
  622.          this.form.outResource.delete(this.form.outResource.scan(this.form.outResourceSelect.value));
  623.          this.form.outResource.length -= 1;
  624.          this.form.outResourceSelect.options = "array this.form.outResource";
  625.       }
  626.    }
  627.  
  628.    function removeResourceButton_onServerClick()
  629.    {
  630.       if ((this.form.inResourceSelect.value.length > 0) && (this.form.inResource.scan(this.form.inResourceSelect.value) >= 0)) {
  631.          this.form.outResource.add(this.form.inResourceSelect.value);
  632.          this.form.outResource.sort();
  633.          this.form.outResourceSelect.options = "array this.form.outResource";
  634.          this.form.inResource.delete(this.form.inResource.scan(this.form.inResourceSelect.value));
  635.          this.form.inResource.length -= 1;
  636.          this.form.inResourceSelect.options  = "array this.form.inResource";
  637.       }
  638.    }
  639.  
  640. }
  641.