mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
Unique link generator for realm creation.
This commit is contained in:
23
confirmation/migrations/0002_realmcreationkey.py
Normal file
23
confirmation/migrations/0002_realmcreationkey.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('confirmation', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='RealmCreationKey',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('creation_key', models.CharField(max_length=40, verbose_name='activation key')),
|
||||
('date_created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='created')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -30,6 +30,15 @@ except ImportError:
|
||||
|
||||
B16_RE = re.compile('^[a-f0-9]{40}$')
|
||||
|
||||
def check_key_is_valid(creation_key):
|
||||
if not RealmCreationKey.objects.filter(creation_key=creation_key).exists():
|
||||
return False
|
||||
days_sofar = (now() - RealmCreationKey.objects.get(creation_key=creation_key).date_created).days
|
||||
# Realm creation link expires after settings.REALM_CREATION_LINK_VALIDITY_DAYS
|
||||
if days_sofar <= settings.REALM_CREATION_LINK_VALIDITY_DAYS:
|
||||
return True
|
||||
return False
|
||||
|
||||
def generate_key():
|
||||
return generate_random_token(40)
|
||||
|
||||
@@ -39,6 +48,13 @@ def generate_activation_url(key):
|
||||
reverse('confirmation.views.confirm',
|
||||
kwargs={'confirmation_key': key}))
|
||||
|
||||
def generate_realm_creation_url():
|
||||
key = generate_key()
|
||||
RealmCreationKey.objects.create(creation_key=key, date_created=now())
|
||||
return u'%s%s%s' % (settings.EXTERNAL_URI_SCHEME,
|
||||
settings.EXTERNAL_HOST,
|
||||
reverse('zerver.views.create_realm',
|
||||
kwargs={'creation_key': key}))
|
||||
|
||||
class ConfirmationManager(models.Manager):
|
||||
|
||||
@@ -111,3 +127,7 @@ class Confirmation(models.Model):
|
||||
|
||||
def __unicode__(self):
|
||||
return _('confirmation email for %s') % (self.content_object,)
|
||||
|
||||
class RealmCreationKey(models.Model):
|
||||
creation_key = models.CharField(_('activation key'), max_length=40)
|
||||
date_created = models.DateTimeField(_('created'), default=now)
|
||||
|
||||
Reference in New Issue
Block a user