Esmith::FormMagick::Panel::ibays

From SME Server
Jump to navigationJump to search

NAME

esmith::FormMagick::Panels::ibays - useful panel functions

In a root terminal you can do the command below if you want to display the up-to-date content

perldoc esmith::FormMagick::Panels::ibays

SYNOPSIS

           use esmith::FormMagick::Panels::ibays;

          my $panel = esmith::FormMagick::Panel::ibays->new();
          $panel->display();

DESCRIPTION

new();

Exactly as for esmith::FormMagick

HTML GENERATION ROUTINES

Routines for generating chunks of HTML needed by the panel.

ROUTINES FOR FILLING IN FIELDS

print_ibay_table

Prints out the ibay table on the front page.

print_vhost_message()

Prints a warning message that vhosts whose content is this ibay will be modified to point to primary site.

group_list()

Returns a hash of groups for the Create/Modify screen’s group field’s drop down list.

userAccess_list

Returns the hash of user access settings for showing in the user access drop down list.

publicAccess_list

Returns the hash of public access settings for showing in the public access drop down list.

VALIDATION ROUTINES

max_ibay_name_length()

Checks the length of a given i-bay name against the maximum set in the maxIbayNameLength record of the configuration database. Defaults to a maximum length of the maxIbayNameLength set in the config db.

conflict_check

Check the proposed name for clashes with existing pseudonyms or other accounts of any type.

THE ROUTINES THAT ACTUALLY DO THE WORK

print_save_or_add_button()

      sub print_save_or_add_button {
          my ($self) = @_;

          my $action = $self->cgi->param("action") ││ ’’;
          if ($action eq "modify") {
              $self->print_button("SAVE");
          } else {
              $self->print_button("ADD");
          }

      }

      sub create_ibay {
          my ($self) = @_;
          my $name = $self->cgi->param(’name’);

          my $msg = $self->validate_name($name);
          unless ($msg eq "OK")
          {
              return $self->error($msg);
          }

          $msg = $self->max_ibay_name_length($name);
          unless ($msg eq "OK")
          {
              return $self->error($msg);
          }

          $msg = $self->conflict_check($name);
          unless ($msg eq "OK")
          {
              return $self->error($msg);
          }

          my $uid  = $accountdb->get_next_uid();
          if (my $acct = $accountdb->new_record($name, {
                  Name         => $self->cgi->param(’description’),
                  CgiBin       => $self->cgi->param(’CgiBin’),
                  Group        => $self->cgi->param(’group’),
                  PublicAccess => $self->cgi->param(’publicAccess’),
                  UserAccess   => $self->cgi->param(’userAccess’),
                  Uid          => $uid,
                  Gid          => $uid,
                  PasswordSet  => ’no’,
                  type         => ’ibay’,
              }) )
          {
              # Untaint $name before use in system()
              $name =~ /(.+)/; $name = $1;
              if (system ("/sbin/e-smith/signal-event", "ibay-create", $name) == 0) {
                  $self->success("SUCCESSFULLY_CREATED_IBAY");
              } else {
                  $self->error("ERROR_WHILE_CREATING_IBAY");
              }
          } else {
              $self->error(’CANT_CREATE_IBAY’);
          }
      }

      sub modify_ibay {
          my ($self) = @_;
          my $name = $self->cgi->param(’name’);
          if (my $acct = $accountdb->get($name)) {
              if ($acct->prop(’type’) eq ’ibay’) {
                  $acct->merge_props(
                      Name         => $self->cgi->param(’description’),
                      CgiBin       => $self->cgi->param(’CgiBin’),
                      Group        => $self->cgi->param(’group’),
                      PublicAccess => $self->cgi->param(’publicAccess’),
                      UserAccess   => $self->cgi->param(’userAccess’),
                  );

                  # Untaint $name before use in system()
                  $name =~ /(.+)/; $name = $1;
                  if (system ("/sbin/e-smith/signal-event", "ibay-modify",
                      $name) == 0)
                  {
                      $self->success("SUCCESSFULLY_MODIFIED_IBAY");
                  } else {
                      $self->error("ERROR_WHILE_MODIFYING_IBAY");
                  }
              } else {
                  $self->error(’CANT_FIND_IBAY’);
              }
          } else {
              $self->error(’CANT_FIND_IBAY’);
          }
      }

getExtraParams()

Sets variables used in the lexicon to their required values.

verifyPasswords()

Returns an error message if the two new passwords input don’t match.

validate_name

Checks that the name supplied does not contain any unacceptable chars. Returns OK on success or a localised error message otherwise.

      ting is($panel->validate_name(’foo’), ’OK’, ’validate_name’);
      is($panel->validate_name(’cust3.prj12’),’OK’,’ .. name with dots and
      nums’); is($panel->validate_name(’cust_bay’),’OK’,’ .. name with under-
      score’); isnt($panel->validate_name(’3amigos’), ’OK’, ’ .. cannot start
      with number’); isnt($panel->validate_name(’betty ford’), ’OK’, ’ ..
      cannot contain space’);

check_password

Validates the password using the desired strength