Esempio n. 1
0
    def save(self):
        email = self.email.data
        site_name = current_app.config['PROJECT_SITE_NAME']
        site_url = current_app.config['PROJECT_SITE_URL']
        sender = current_app.config['MAIL_DEFAULT_SENDER']

        # create signed data
        s = get_signer()
        data = {
            'email': email,
            'signup': True
        }
        signed_data = s.dumps(data)

        # set context to template render
        context = dict(
            site_name=site_name,
            site_url=site_url,
            email=email,
            signed_data=signed_data
        )

        # load template
        html = render_template(
            'accounts/emails/signup.html', **context
        )

        # create and send message
        msg = Message(
            u'Confirm your account - {0}.'.format(site_name),
            sender=sender,
            recipients=[email]
        )
        msg.html = html
        mail.send(msg)
Esempio n. 2
0
def recover_password_confirm(token):
    s = get_signer()
    try:
        signed_data = s.loads(token,
                              max_age=current_app.
                              config['PROJECT_RECOVER_PASSWORD_TOKEN_MAX_AGE'])
        email = signed_data['email']
        recover_password = signed_data['recover-password']
    except:
        flash(u'Invalid Link.', 'error')
        return redirect(url_for('pages_app.index'))

    try:
        user = User.objects.get(email=email)
    except:
        flash(u'E-mail not found.', 'error')
        return redirect(url_for('pages_app.index'))

    form = RecoverPasswordConfirmForm()
    form.user = user
    if form.validate_on_submit():
        user = form.save()
        flash(u'Password set successfully.', 'success')
        return redirect(url_for('accounts_app.login'))
    return render_template('accounts/recover_password_confirm.html',
                           form=form,
                           token=token,
                           user=user)
Esempio n. 3
0
def signup_confirm(token):
    s = get_signer()
    try:
        signed_data = s.loads(
            token, max_age=current_app.config['PROJECT_SIGNUP_TOKEN_MAX_AGE'])
        email = signed_data['email']
        signup = signed_data['signup']
    except:
        flash(u'Invalid activation Link.', 'error')
        return redirect(url_for('accounts_app.signup'))

    if User.objects.filter(email=email):
        flash(u'E-mail in use.', 'error')
        return redirect(url_for('accounts_app.signup'))

    next = request.values.get('next', '/')

    form = SignupConfirmForm()
    form.next.data = next
    if form.validate_on_submit():
        user = form.save(email=email)
        session['user_id'] = unicode(user.pk)
        flash(u'Account registered successfully.', 'success')
        return redirect(next)
    return render_template('accounts/signup_confirm.html',
                           form=form,
                           token=token)
Esempio n. 4
0
def signup_confirm(token):
    s = get_signer()
    try:
        signed_data = s.loads(
            token, max_age=current_app.config['PROJECT_SIGNUP_TOKEN_MAX_AGE']
        )
        email = signed_data['email']
        signup = signed_data['signup']
    except:
        flash(u'Invalid activation Link.', 'error')
        return redirect(url_for('accounts_app.signup'))

    if User.objects.filter(email=email):
        flash(u'E-mail in use.', 'error')
        return redirect(url_for('accounts_app.signup'))

    next = request.values.get('next', '/')

    form = SignupConfirmForm()
    form.next.data = next
    if form.validate_on_submit():
        user = form.save(email=email)
        session['user_id'] = unicode(user.pk)
        flash(u'Account registered successfully.', 'success')
        return redirect(next)
    return render_template('accounts/signup_confirm.html', form=form, token=token)
Esempio n. 5
0
def recover_password_confirm(token):
    s = get_signer()
    try:
        signed_data = s.loads(
            token, max_age=current_app.config['PROJECT_RECOVER_PASSWORD_TOKEN_MAX_AGE']
        )
        email = signed_data['email']
        recover_password = signed_data['recover-password']
    except:
        flash(u'Invalid Link.', 'error')
        return redirect(url_for('pages_app.index'))

    try:
        user = User.objects.get(email=email)
    except:
        flash(u'E-mail not found.', 'error')
        return redirect(url_for('pages_app.index'))

    form = RecoverPasswordConfirmForm()
    form.user = user
    if form.validate_on_submit():
        user = form.save()
        flash(u'Password set successfully.', 'success')
        return redirect(url_for('accounts_app.login'))
    return render_template(
        'accounts/recover_password_confirm.html',
        form=form, token=token, user=user
    )
Esempio n. 6
0
    def save(self):
        email = self.email.data
        site_name = current_app.config['PROJECT_SITE_NAME']
        site_url = current_app.config['PROJECT_SITE_URL']
        sender = current_app.config['MAIL_DEFAULT_SENDER']

        # create signed data
        s = get_signer()
        data = {'email': email, 'recover-password': True}
        signed_data = s.dumps(data)

        # set context to template render
        context = dict(site_name=site_name,
                       site_url=site_url,
                       email=email,
                       signed_data=signed_data)

        # load template
        html = render_template('accounts/emails/recover_password.html',
                               **context)

        # create and send message
        msg = Message('Recover your password - {0}.'.format(site_name),
                      sender=sender,
                      recipients=[email])
        msg.html = html
        if current_app.config['MAIL_FAKE_LINK'] != 'True':
            mail.send(msg)
        else:
            return signed_data
Esempio n. 7
0
 def setUp(self):
     self.s = get_signer()
     self.data = {'email': u'*****@*****.**', 'signup': True}
     self.token = self.s.dumps(self.data)
     self.data['email'] = u'*****@*****.**'
     self.token2 = self.s.dumps(self.data)
     self.token3 = self.token + 'a'
     self.user = User(username='******',
                      email='*****@*****.**',
                      password='******').save()
     self.url = url_for('accounts_app.signup_confirm', token=self.token)
     self.url2 = url_for('accounts_app.signup_confirm', token=self.token2)
     self.url3 = url_for('accounts_app.signup_confirm', token=self.token3)
     self.redirect_invalid = url_for('accounts_app.signup')
     self.redirect_to = url_for('pages_app.index')
     self.redirect_to_about = url_for('pages_app.about')
Esempio n. 8
0
 def setUp(self):
     self.s = get_signer()
     self.data = {
         'email': u'*****@*****.**',
         'recover-password': True
     }
     self.token = self.s.dumps(self.data)
     self.data['email'] = u'*****@*****.**'
     self.token2 = self.s.dumps(self.data)
     self.token3 = self.token + 'a'
     self.user = User(
         username='******',
         email='*****@*****.**',
         password='******'
     ).save()
     self.url = url_for('accounts_app.recover_password_confirm', token=self.token)
     self.url2 = url_for('accounts_app.recover_password_confirm', token=self.token2)
     self.url3 = url_for('accounts_app.recover_password_confirm', token=self.token3)
     self.redirect_invalid = url_for('pages_app.index')
     self.redirect_to = url_for('accounts_app.login')
Esempio n. 9
0
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django_celery_beat.models import PeriodicTask

from common.utils import get_signer, get_logger
from orgs.utils import set_to_root_org
from ..celery.utils import delete_celery_periodic_task, \
    create_or_update_celery_periodic_tasks, \
    disable_celery_periodic_task
from ..ansible import AdHocRunner, AnsibleError
from ..inventory import JMSInventory

__all__ = ["Task", "AdHoc", "AdHocRunHistory"]

logger = get_logger(__file__)
signer = get_signer()


class Task(models.Model):
    """
    This task is different ansible task, Task like 'push system user', 'get asset info' ..
    One task can have some versions of adhoc, run a task only run the latest version adhoc
    """
    id = models.UUIDField(default=uuid.uuid4, primary_key=True)
    name = models.CharField(max_length=128, verbose_name=_('Name'))
    interval = models.IntegerField(verbose_name=_("Interval"),
                                   null=True,
                                   blank=True,
                                   help_text=_("Units: seconds"))
    crontab = models.CharField(verbose_name=_("Crontab"),
                               null=True,
Esempio n. 10
0
# -*- coding: utf-8 -*-
#
import os
import uuid
from hashlib import md5

import sshpubkeys
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings

from common.utils import get_signer, ssh_key_string_to_obj, ssh_key_gen
from common.validators import alphanumeric
from .utils import private_key_validator

signer = get_signer()


class AssetUser(models.Model):
    id = models.UUIDField(default=uuid.uuid4, primary_key=True)
    name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'))
    username = models.CharField(max_length=32, verbose_name=_('Username'), validators=[alphanumeric])
    _password = models.CharField(max_length=256, blank=True, null=True, verbose_name=_('Password'))
    _private_key = models.TextField(max_length=4096, blank=True, null=True, verbose_name=_('SSH private key'), validators=[private_key_validator, ])
    _public_key = models.TextField(max_length=4096, blank=True, verbose_name=_('SSH public key'))
    comment = models.TextField(blank=True, verbose_name=_('Comment'))
    date_created = models.DateTimeField(auto_now_add=True)
    date_updated = models.DateTimeField(auto_now=True)
    created_by = models.CharField(max_length=128, null=True, verbose_name=_('Created by'))

    @property