+ 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";
+
+ my $in = IO::File->new($main::memberfile, "r");
+
+ $form->error($locale->text('Could not open the old memberfile.')) if (!$in);
+
+ my (%members, $login);
+
+ while (<$in>) {