+sub logout {
+ $main::auth->destroy_session();
+ adminlogin();
+}
+
+sub check_auth_db_and_tables {
+ my $form = $main::form;
+ my $locale = $main::locale;
+
+ my %params;
+
+ map { $params{"db_${_}"} = $main::auth->{DB_config}->{$_} } keys %{ $auth->{DB_config} };
+
+ if (!$main::auth->check_database()) {
+ $form->{title} = $locale->text('Authentification database creation');
+ $form->header();
+ print $form->parse_html_template('admin/check_auth_database', \%params);
+
+ exit 0;
+ }
+
+ if (!$main::auth->check_tables()) {
+ $form->{title} = $locale->text('Authentification tables creation');
+ $form->header();
+ print $form->parse_html_template('admin/check_auth_tables', \%params);
+
+ exit 0;
+ }
+
+ if (-f $main::memberfile) {
+ my $memberdir = "";
+
+ if ($main::memberfile =~ m|^.*/|) {
+ $memberdir = $&;
+ }
+
+ my $backupdir = "${memberdir}member-file-migration";
+
+ $form->{title} = $locale->text('User data migration');
+ $form->header();
+ print $form->parse_html_template('admin/user_migration', { 'memberfile' => $main::memberfile,
+ 'backupdir' => $backupdir });
+
+ exit 0
+ }
+}
+
+sub create_auth_db {
+ my $form = $main::form;
+
+ $main::auth->create_database('superuser' => $form->{db_superuser},
+ 'superuser_password' => $form->{db_superuser_password},
+ 'template' => $form->{db_template});
+ login();
+}
+
+sub create_auth_tables {
+ my $form = $main::form;
+ my $locale = $main::locale;
+
+ $main::auth->create_tables();
+ $main::auth->set_session_value('rpw', $form->{rpw});
+ $main::auth->create_or_refresh_session();
+
+ if (!-f $main::memberfile) {
+ # New installation -- create a standard group with full access
+ my %members;
+ my $group = {
+ 'name' => $locale->text('Full Access'),
+ 'description' => $locale->text('Full access to all functions'),
+ 'rights' => { map { $_ => 1 } SL::Auth::all_rights() },
+ 'members' => [ map { $_->{id} } values %members ],
+ };
+
+ $main::auth->save_group($group);
+ }
+
+ login();
+}
+
+sub migrate_users {
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my $locale = $main::locale;
+
+ my $memberdir = "";
+
+ if ($main::memberfile =~ m|^.*/|) {
+ $memberdir = $&;
+ }
+
+ my $backupdir = "${memberdir}member-file-migration";
+
+ if (! -d $backupdir && !mkdir $backupdir, 0700) {
+ $form->error(sprintf($locale->text('The directory "%s" could not be created:\n%s'), $backupdir, $!));
+ }
+
+ copy $main::memberfile, "users/member-file-migration/members";