From 048767149e571469d888ec81d324caa7b3b64671 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 30 Apr 2019 18:05:07 +0200 Subject: use a separate table for registration tokens --- lib/Travelynx/Command/database.pm | 32 ++++++++++++++++++++++++++++++++ lib/Travelynx/Command/maintenance.pm | 3 ++- 2 files changed, 34 insertions(+), 1 deletion(-) (limited to 'lib/Travelynx/Command') diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm index 05b43d6..79ff086 100644 --- a/lib/Travelynx/Command/database.pm +++ b/lib/Travelynx/Command/database.pm @@ -424,6 +424,38 @@ my @migrations = ( } ); }, + + # v9 -> v10 + # Add pending_registrations table. The users.token column is no longer + # needed. + sub { + my ($db) = @_; + $db->query( + qq{ + create table pending_registrations ( + user_id integer not null references users (id) primary key, + token varchar(80) not null + ); + comment on table pending_registrations is 'Verification tokens for newly registered accounts'; + update schema_version set version = 10; + } + ); + my $res = $db->select( 'users', [ 'id', 'token' ], { status => 0 } ); + for my $user ( $res->hashes->each ) { + $db->insert( + 'pending_registrations', + { + user_id => $user->{id}, + token => $user->{token} + } + ); + } + $db->query( + qq{ + alter table users drop column token; + } + ); + }, ); sub setup_db { diff --git a/lib/Travelynx/Command/maintenance.pm b/lib/Travelynx/Command/maintenance.pm index 8c07728..fc64884 100644 --- a/lib/Travelynx/Command/maintenance.pm +++ b/lib/Travelynx/Command/maintenance.pm @@ -59,7 +59,8 @@ sub run { } ); } - $db->delete( 'users', { id => $user->{id} } ); + $db->delete( 'pending_registrations', { user_id => $user->{id} } ); + $db->delete( 'users', { id => $user->{id} } ); printf( "Pruned unverified user %d\n", $user->{id} ); } -- cgit v1.2.3