Exemplo n.º 1
0
    def signup(self):
        form = SignupForm(
            country=get_country_code_by_remote_addr(request.remote_addr))
        if request.method == 'POST':
            if not form.validate_on_submit():
                flash_error(form.errors)
                return render_template('home/signup.html', form=form)

            email = form.email.data.lower()
            if not is_valid_email(email, False):
                flash_error(gettext(u'Invalid email.'))
                return render_template('home/signup.html', form=form)

            existing_user = SubscriberUser.objects(email=email,
                                                   class_check=False).first()
            if existing_user:
                return redirect(url_for('HomeView:signin'))

            new_user = SubscriberUser.make_subscriber(email,
                                                      form.password.data,
                                                      form.country.data)
            new_user.save()

            servers = ServiceSettings.objects()
            for serv in servers:
                new_user.add_server(serv)
                serv.add_subscriber(new_user)

            token = self._confirm_link_generator.dumps(email,
                                                       salt=HomeView.SALT_LINK)
            confirm_url = url_for('HomeView:confirm_email',
                                  token=token,
                                  _external=True)
            config = app.config['PUBLIC_CONFIG']
            html = render_template(
                'home/email/activate.html',
                confirm_url=confirm_url,
                contact_email=config['support']['contact_email'],
                title=config['site']['title'],
                company=config['company']['title'])
            msg = Message(subject=gettext(u'Confirm Email'),
                          recipients=[email],
                          html=html)
            mail.send(msg)
            flash_success(gettext(u'Please check email: {0}.'.format(email)))
            return redirect(url_for('HomeView:signin'))

        return render_template('home/signup.html', form=form)
Exemplo n.º 2
0
def import_subscribers_to_server(db, server: ServiceSettings):
    cursor = db.cursor(dictionary=True)
    sql = 'SELECT username,password,created_at,exp_date FROM users'
    cursor.execute(sql)
    sql_subscribers = cursor.fetchall()

    for sql_entry in sql_subscribers:
        new_user = SubscriberUser.make_subscriber(
            email=sql_entry['username'],
            password=sql_entry['password'],
            country='US')
        new_user.status = SubscriberUser.Status.ACTIVE
        created_at = sql_entry['created_at']
        if created_at:
            new_user.created_date = datetime.fromtimestamp(created_at)
        exp_date = sql_entry['exp_date']
        if exp_date:
            new_user.exp_date = datetime.fromtimestamp(exp_date)
        dev = Device(name='Xtream')
        new_user.add_device(dev)
        # save
        new_user.add_server(server)
        server.add_subscriber(new_user)

    cursor.close()
Exemplo n.º 3
0
 def update_entry(self, subscriber: SubscriberUser) -> SubscriberUser:
     subscriber.email = self.email.data
     subscriber.password = SubscriberUser.make_md5_hash_from_password(
         self.password.data)
     subscriber.country = self.country.data
     subscriber.language = self.language.data
     subscriber.status = self.status.data
     subscriber.exp_date = self.exp_date.data
     return subscriber
Exemplo n.º 4
0
def post_login(form: SigninForm):
    if not form.validate_on_submit():
        flash_error(form.errors)
        return render_template('home/signin.html', form=form)

    check_user = SubscriberUser.objects(email=form.email.data, class_check=False).first()
    if not check_user:
        flash_error(gettext(u'User not found.'))
        return render_template('home/signin.html', form=form)

    if check_user.status == SubscriberUser.Status.NO_ACTIVE:
        flash_error(gettext(u'User not active.'))
        return render_template('home/signin.html', form=form)

    if not SubscriberUser.check_password_hash(check_user['password'], form.password.data):
        flash_error(gettext(u'Invalid password.'))
        return render_template('home/signin.html', form=form)

    login_user_wrap(check_user)
    return redirect(url_for('SubscriberView:profile'))
Exemplo n.º 5
0
 def confirm_email(self, token):
     try:
         email = self._confirm_link_generator.loads(token, salt=HomeView.SALT_LINK,
                                                    max_age=HomeView.CONFIRM_LINK_TTL)
         confirm_user = SubscriberUser.objects(email=email, class_check=False).first()
         if confirm_user:
             confirm_user.status = SubscriberUser.Status.ACTIVE
             confirm_user.save()
             login_user_wrap(confirm_user)
             return redirect(url_for('HomeView:signin'))
         else:
             return '<h1>We can\'t find user.</h1>'
     except SignatureExpired:
         return '<h1>The token is expired!</h1>'
Exemplo n.º 6
0
def load_user(user_id):
    return SubscriberUser.objects(pk=user_id, class_check=False).first()
Exemplo n.º 7
0
 def make_entry(self) -> SubscriberUser:
     return self.update_entry(SubscriberUser())
Exemplo n.º 8
0
import argparse
import os
import sys
from mongoengine import connect

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

from app.common.subscriber.login.entry import SubscriberUser

PROJECT_NAME = 'create_provider'

if __name__ == '__main__':
    parser = argparse.ArgumentParser(prog=PROJECT_NAME,
                                     usage='%(prog)s [options]')
    parser.add_argument('--mongo_uri',
                        help='MongoDB credentials',
                        default='mongodb://localhost:27017/iptv')
    parser.add_argument('--email', help='Subscriber email')
    parser.add_argument('--password', help='Subscriber password')
    parser.add_argument('--country', help='Subscriber country', default='US')

    argv = parser.parse_args()

    mongo = connect(host=argv.mongo_uri)
    if mongo:
        new_user = SubscriberUser.make_subscriber(email=argv.email,
                                                  password=argv.password,
                                                  country=argv.country)
        new_user.status = SubscriberUser.Status.ACTIVE
        new_user.save()