예제 #1
0
def save_reset_pass():
    from lib.email2 import send_email
    from models import User
    from models import Transaction
    from models import TransactionType
    from sbb import application, db
    form = ResetPassordForm(request.form)
    if form.validate_on_submit():
        user = User.query.filter_by(email=request.form['email']).first()
        if user:
            user.password = User.hash_password(form.password.data)
            db.session.add(user)
            tr = Transaction(datetime.now(), None, 1)
            tr.transactionTypeId = TransactionType.query.filter_by(
                id=6).first().id
            db.session.add(tr)
            db.session.commit()
            html = 'Thank you! You have successfully reset your password.'
            subject = "Reset password"
            send_email(request.form['email'], subject, html,
                       application.config)
            flash('Thank you! You have successfully reset your password.')
        else:
            flash('No user found with specified email.', 'warning')
            return redirect(request.referrer)
    else:
        flash_errors(form)
        return redirect(request.referrer)
    return redirect('login')
예제 #2
0
def login():
    from random import randint
    from sbb import db
    from models import User
    from models import Transaction
    from models import TransactionType
    if request.method == 'GET':
        session['a'] = randint(1, 10)
        session['b'] = randint(1, 10)
        return render_template('home/login.html',
                               a=session['a'],
                               b=session['b'])
    form = LoginForm(request.form)
    if form.validate_on_submit():
        captcha = form.captcha.data.strip()
        if captcha != '' and int(captcha) == session['a'] + session['b']:
            email = form.email.data
            password = form.password.data
            remember_me = False
            if 'remember_me' in request.form:
                remember_me = True
            user = User.query.filter_by(email=email).first()
            tr = TransactionType.query.filter_by(id=1).first()
            if user is None or not user.check_password(password):
                flash('Username or Password is invalid', 'error')
                if user:
                    login_act = Transaction(date=datetime.now(),
                                            amount=None,
                                            status=0)
                    login_act.account = user.account
                    login_act.transactionType = tr
                    db.session.add(login_act)
                    db.session.commit()
                return redirect(url_for('home.login'))
            login_user(user, remember=remember_me)
            flash('Logged in successfully')
            login_act = Transaction(date=datetime.now(), amount=None, status=1)
            login_act.account = current_user.account
            login_act.transactionType = tr
            db.session.add(login_act)
            db.session.commit()
            return redirect(
                request.args.get('next') or url_for(
                    'userprofile.dashboard', _external=True, _scheme='https'))
        else:
            flash("Wrong captcha")
    flash_errors(form)
    session['a'] = randint(1, 10)
    session['b'] = randint(1, 10)
    return render_template('home/login.html', a=session['a'], b=session['b'])
예제 #3
0
def send_reset_pass():
    from lib.email2 import send_email
    from models import User
    from sbb import application
    form = RequestResetPassordForm(request.form)
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user:
            token = generate_confirmation_token(form.email.data,
                                                application.config)
            reset_url = url_for('home.reset_password',
                                token=token,
                                _external=True)
            html = render_template('home/reset_password_email.html',
                                   reset_url=reset_url)
            subject = "Reset password request"
            send_email(form.email.data, subject, html, application.config)
            flash('We have sent you a link for resseting password.', 'success')
        else:
            flash('No user found with specified email.', 'warning')
            return redirect('view_reset_pass')
    else:
        flash_errors(form)
    return redirect('login')
예제 #4
0
def confirm_withdraw():
    from sbb import db, application
    from models import AccountInvestments

    accWallets = current_user.account.wallets.all()

    accInvs = AccountInvestments.query.filter(
        AccountInvestments.accountId == current_user.account.id,
        AccountInvestments.isActive == 1).all()

    accWallets = None if len(accWallets) == 0 else accWallets

    from models import AccountWallets
    from forms import WithdrawForm
    from models import TransactionType
    from models import Transaction
    from models import AccountInvestments

    form = WithdrawForm(request.form)
    if form.validate_on_submit():
        accWalletId = form.accWalletId.data.strip()
        amount = float(form.amount.data.strip())
        source = form.source.data.strip()

        accW = AccountWallets.query.filter(
            AccountWallets.walletId == accWalletId,
            AccountWallets.accountId == current_user.account.id).first()

        balance = None
        if source == 'rbusd':
            if amount < application.config['MINUSDWITHDRAW']:
                flash('Min deposit amount is: {0}$'.format(
                    str(application.config['MINUSDWITHDRAW'])))
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
            balance = float(current_user.account.balance)
            if accW.wallet.paymentSystemId == 4:
                flash(
                    'Please make sure that withdraw amout unit and wallet unit are matching'
                )
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
        elif source == 'rbbtc':
            if amount < application.config['MINBTCWITHDRAW']:
                flash('Min deposit amount is: {0}B'.format(
                    str(application.config['MINBTCWITHDRAW'])))
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
            balance = float(current_user.account.bitcoin)
            if accW.wallet.paymentSystemId == 3:
                flash(
                    'Please make sure that withdraw amout unit and wallet unit are matching'
                )
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
        elif source.startswith('ai'):
            accInv = AccountInvestments.query.filter_by(
                id=float(source[2:])).first()
            if accInv.paymentSystemId == 4 and amount < application.config[
                    'MINBTCWITHDRAW']:
                flash('Min deposit amount is: {0}B'.format(
                    str(application.config['MINBTCWITHDRAW'])))
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
            if accInv.paymentSystemId == 3 and amount < application.config[
                    'MINUSDWITHDRAW']:
                flash('Min deposit amount is: {0}$'.format(
                    str(application.config['MINUSDWITHDRAW'])))
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)
            balance = float(accInv.currentBalance - accInv.initialInvestment)
            if accInv.paymentSystemId != accW.wallet.paymentSystemId:
                flash(
                    'Please make sure that withdraw amout unit and wallet unit are matching'
                )
                return render_template('profile/withdraw.html',
                                       accWallets=accWallets,
                                       accInvs=accInvs)

        if amount <= 0:
            flash('Please specify positive amount')
            return render_template('profile/withdraw.html',
                                   accWallets=accWallets,
                                   accInvs=accInvs)
        elif balance < amount:
            flash('Sepcified withdraw money greater then your balance')
            return render_template('profile/withdraw.html',
                                   accWallets=accWallets,
                                   accInvs=accInvs)
        elif form.pin_number.data != current_user.pin:
            flash('Wrong PIN nubmer')
            return render_template('profile/withdraw.html',
                                   accWallets=accWallets,
                                   accInvs=accInvs)
        else:
            trType = TransactionType.query.filter_by(id=5).first()
            dep_act = Transaction(date=datetime.datetime.now(),
                                  amount=amount,
                                  status=0)
            dep_act.account = current_user.account
            dep_act.transactionType = trType
            dep_act.unit = accW.wallet.unit
            db.session.add(dep_act)

            db.session.commit()

        return render_template('profile/confirm_withdraw.html',
                               amount=amount,
                               accWallet=accW,
                               withId=dep_act.id,
                               unit=accW.wallet.unit,
                               source=source)
    flash_errors(form)
    return render_template('profile/withdraw.html',
                           accWallets=accWallets,
                           accInvs=accInvs)
예제 #5
0
def register():
    from random import randint

    from sbb import application, db
    from lib.email2 import send_email
    from models import User, ReferralProgram, Account, Referral

    referral = None
    if 'referral' in session:
        referral = session['referral']

    if request.method == 'GET':
        session['a'] = randint(1, 10)
        session['b'] = randint(1, 10)
        referral = None
        if 'referral' in session:
            referral = session['referral']
        return render_template('home/register.html',
                               referral=referral,
                               a=session['a'],
                               b=session['b'])
    form = RegistrationForm(request.form)
    if form.validate_on_submit():
        captcha = form.captcha.data.strip()
        if captcha != '' and int(captcha) == session['a'] + session['b']:
            cur = User.query.filter_by(username=form.username.data).first()
            ecur = User.query.filter_by(email=form.email.data).first()

            if cur is None and ecur is None:

                # refereal program 521
                rp = ReferralProgram.query.filter_by(id=1).first()

                # Account User
                account = Account(0, 0)
                account.referralProgram = rp
                db.session.add(account)
                #db.session.commit()

                user = User(username=form.username.data,
                            password=form.password.data,
                            email=form.email.data)
                user.account = account
                if form.fb.data != '':
                    user.fb = form.fb.data
                if form.skype.data != '':
                    user.skype = form.skype.data
                user.pin = form.pin_number.data
                db.session.add(user)
                #db.session.commit()

                # referral account
                refUsername = form.refemail.data.strip()
                if refUsername != '':
                    refUser = User.query.filter_by(
                        username=refUsername).first()
                    if refUser:
                        referral = Referral(accountId=account.id)
                        referral.referralAccount = refUser.account
                        db.session.add(referral)
                    else:
                        flash("Wrong referral. Referral data skiped.")

                db.session.commit()

                token = generate_confirmation_token(user.email,
                                                    application.config)
                confirm_url = url_for('home.confirm_email',
                                      token=token,
                                      _external=True)
                html = render_template('home/activate_email.html',
                                       confirm_url=confirm_url)
                subject = "Please confirm your email"
                send_email(user.email, subject, html, application.config)

                login_user(user)
                flash('A confirmation email has been sent via email.',
                      'success')
                return redirect(url_for('home.unconfirmed'))
            else:
                flash('User with specified data already exists in a system',
                      'warning')
        else:
            flash("Wrong captcha")
    else:
        flash_errors(form)
    session['a'] = randint(1, 10)
    session['b'] = randint(1, 10)
    return render_template('home/register.html',
                           referral=referral,
                           a=session['a'],
                           b=session['b'])