Exemple #1
0
def user_reconfirm():
    """
    When user can't receive the confirm email,app can resend the email through this view.
    """
    if current_user.confirmed:
        return render_template('auth/user_confirm.html', confirmed=True)
    else:
        token = current_user.generate_token()
        send_mail(to=current_user.email, subject="Confirm Your Account", template='auth/email/confirm',
                  token=token, user=current_user)
        flash("Register successful.Pleas log in.And a confirm message has been sent to your email.")
        return redirect(request.args.get('next') or url_for('auth.login'))
Exemple #2
0
def user_signup():
    form = SignupForm()
    if form.validate_on_submit():
        password = form.password.data
        user = User(email=form.email.data, username=form.name.data, password_hash=generate_password_hash(password))
        db.session.add(user)
        db.session.commit()
        token = user.generate_token()
        send_mail(to=user.email, subject="Confirm Your Account", template='auth/email/confirm', token=token, user=user)
        flash("Register successful.Pleas log in.And a confirm message has been sent to your email.")
        user.member_since = datetime.utcnow()
        return redirect(request.args.get('next') or url_for('auth.login'))
    return render_template("auth/user_signup.html", form=form)
Exemple #3
0
def password_reset_request():
    if not current_user.is_anonymous:
        flash("Reset password is for user who forgot the password.")
        return redirect(url_for("web.index"))
    # EmailForm is only used for validation, not in rendering
    form = PasswordResetRequestForm()
    if form.validate_on_submit():
        email = form.email.data.lower()
        user = User.query.filter_by(email=email).first()
        if user:
            token = user.generate_reset_token()
            send_mail(user.email,
                      "重置密码",
                      "email/reset_password",
                      user=user,
                      token=token)
            flash("密码重置邮件已发送到{},注意查收".format(user.email))
            return redirect(url_for("auth.login"))
        else:
            flash("邮件地址无效")
    return render_template("auth/forget_password_request.html", form=form)
Exemple #4
0
def forget_password():
    form = Forget_passwordForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if send_mail(form.email.data,
                     '用户密码找回',
                     'forget_password_email.html',
                     user=user,
                     token=get_token(user)):
            return
        flash('找回密码的邮件已经发送到' + form.email.data + ',请及时查收!', 'info')
    return render_template('forget_password.html', form=form)
Exemple #5
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        # 将数据写入数据库
        db.session.add(u)
        db.session.commit()
        #生成用于验证激活状态的token
        token = u.make_active_token()
        #调用邮箱发送激活邮件
        send_mail(u.email,
                  '账户激活',
                  'email/active',
                  username=u.username,
                  token=token)
        #来一个提示信息 跳转到首页
        flash('邮件已发送 请读取邮件并激活')
        return render_template('main/index.html')
    return render_template('user/register.html', form=form)
Exemple #6
0
def export_reports(user_id):
    try:
        user = User.query.get(user_id)
        reports_query = Report.query.order_by(Report.timestamp.desc())
        _set_task_progress(0)
        data = []
        i = 0
        total_posts = reports_query.count()

        for report in reports_query.all():
            data.append({
                'employee_id':
                report.employee.id,
                'employee_name':
                report.employee.name,
                'report_observation':
                report.observations,
                'report_timestamp':
                report.timestamp.strftime('%d/%m/%Y %H:%M'),
                'report_checkin':
                'Prezent' if report.check_in else 'Absent',
            })
            time.sleep(1)
            i += 1
            _set_task_progress(100 * i // total_posts)

        send_mail('[Progresso Nel Edilizia] Rapoartele tale',
                  recipients=app.config['ADMINS'],
                  text_body=render_template('email/export_posts.txt',
                                            user=user,
                                            what='rapoartele'),
                  html_body=render_template('email/export_posts.html',
                                            user=user,
                                            what='rapoartele'),
                  attachments=[('posts.json', 'application/json',
                                json.dumps({'posts': data}, indent=4))],
                  sync=True)
    except:
        app.logger.error('Unhandled exception', exc_info=sys.exc_info())
    _set_task_progress(100)
Exemple #7
0
def register():
    form = RegisterationForm()
    if form.validate_on_submit():
        user = User()
        user.username = form.username.data
        user.password = form.password.data
        user.email = form.email.data
        user.role = Role.query.filter_by(name='普通会员').first()
        db.session.add(user)
        flash('用户%s注册成功' % (user.username), category='success')
        # 提交数据库之后才能赋予新用户 id 值,而确认令牌需要用到 id ,所以不能延后提交。
        db.session.commit()
        token = user.generate_confirmation_token()
        send_mail(to=[user.email],
                  subject='请激活你的任务管理平台帐号',
                  filename='confirm',
                  user=user,
                  token=token)
        flash('平台验证消息已经发送到你的邮箱, 请确认后登录', category='success')
        return redirect(url_for('auth.login'))

    return render_template('register.html', form=form)
Exemple #8
0
def reset_password():
    form1 = EUForm()
    global authcode
    authcode = random_string(length=6)
    if form1.validate_on_submit():
        global Uname
        username = form1.username.data
        Uname = username
        user = User.query.filter(
            or_(User.username == username, User.email == username)).first()
        # print(user.email)
        if user:
            send_mail([user.email],
                      '验证码邮件',
                      'email/authcode',
                      username=user.username,
                      authcode=authcode)
            flash('验证码邮件已发送,注意查收')
            return redirect(url_for('users.reset_password2'))
        else:
            flash('请输入正确的用户名或邮箱')
    return render_template('users/reset_password.html', form1=form1)
Exemple #9
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 根据提交的数据创建用户对象
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        # 保存到数据库中
        db.session.add(u)
        # 手动提交,此时需要用到用户id
        db.session.commit()
        # 发送激活邮件
        token = u.generate_activate_token()
        send_mail('账户激活',
                  form.email.data,
                  'activate.html',
                  username=form.username.data,
                  token=token)
        # 发送提示
        flash('注册成功,请点击邮件链接以完成激活')
        return redirect(url_for('main.index'))
    return render_template('user/register.html', form=form)
Exemple #10
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 创建User模型
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        # 保存到数据库
        db.session.add(u)
        # 此时用户还没有添加到数据库中,因此没有id,无法生成token
        # 在这里需要手动提交,也就是立即将数据写入到数据库中
        db.session.commit()
        # 发送账户激活邮件
        token = u.generate_activate_token()
        send_mail(form.email.data,
                  '账户激活',
                  'email/activate',
                  token=token,
                  username=u.username)
        flash('注册成功,激活邮件已发送至注册邮箱,请点击完成激活')
        return redirect(url_for('main.index'))
    return render_template('user/register.html', form=form)
Exemple #11
0
def reset_password1():
    form = Reset_pwd1()
    if form.validate_on_submit():
        global authcode
        authcode = random_string(length=6)

        user = User.query.filter(
            or_(User.username == form.username.data,
                User.email == form.username.data)).first()
        if user:
            global uname
            uname = user.username
            send_mail([user.email],
                      '验证码',
                      'users/mail_auth',
                      username=user.username,
                      authcode=authcode)
            flash('验证码已经发送')
            return redirect(url_for('users.reset_password2', ))
        else:
            flash('没有此用户!')
    return render_template('users/reset_pwd1.html', form=form)
Exemple #12
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 创建对象
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        # 写入数据库
        db.session.add(u)
        # 因为下面产生token时需要用到用户id,此时还没有用户id
        db.session.commit()
        # 生成token
        token = u.generate_activate_token()
        # 发送激活邮件
        send_mail(form.email.data,
                  '账户激活',
                  'email/account_activate',
                  token=token,
                  username=form.username.data)
        flash('激活邮件已发送,请点击链接完成用户激活')
        return redirect(url_for('main.index'))
    return render_template('user/register.html', form=form)
Exemple #13
0
def register():
    form = Register()
    if form.validate_on_submit():
        # 实例化user
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        db.session.add(u)
        db.session.commit()
        # 生成token
        token = u.generate_token()
        # 发送邮件
        send_mail('邮件激活',
                  form.email.data,
                  'activate',
                  username=form.username.data,
                  token=token)
        # 提示注册
        flash('注册成功,去激活')
        # 跳转登陆页面
        return redirect(url_for('user.login'))
    return render_template('user/register.html', form=form)
Exemple #14
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 创建用户对象
        u = User()
        try:
            u.username = form.username.data
            u.password = form.password.data
            u.email = form.email.data
        except Exception as e:
            flash('用户名或邮箱不可用')
            return redirect(url_for('user.register'))
        # 保存到数据库
        db.session.add(u)
        # 手动提交,因为生成token时需要使用用户id
        db.session.commit()
        # 生成包含有效信息的token
        token = u.generate_activate_token()
        # 发送激活邮件
        send_mail('账户激活', form.email.data, 'email/activate.html', token=token)
        flash('注册成功,请点击邮件中的链接以完成激活')
        return redirect(url_for('main.index'))
    return render_template('user/register.html', form=form)
Exemple #15
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 根据form的数据,生成用户对象
        u = User(username=form.username.data,
                 email=form.email.data,
                 password=form.password.data)
        # 保存对象。
        db.session.add(u)
        # 增强代码强壮性,手动提交一次。
        db.session.commit()
        # 发送激活邮件。
        token = u.generate_activate_token()
        send_mail('用户激活',
                  form.email.data,
                  'user/activate',
                  username=form.username.data,
                  token=token)
        # 提示用户注册成功
        # 跳转
        flash('注册成功')
        return redirect(url_for('user.login'))
    return render_template('user/register.html', form=form)
Exemple #16
0
def register():
    from app.models import Role
    form = Register()
    if form.validate_on_submit():
        user = User()
        user.name = form.name.data
        user.password = form.password.data
        user.email = form.email.data
        if user.email == current_app.config['MAIL_USERNAME']:
            user.role = Role.query.filter_by(permissions=0xff).first()
        else:
            user.role = Role.query.filter_by(default=True).first()
        db.session.add(user)
        db.session.commit()
        user.generate_api()
        token = user.generate_token()
        html = render_template('email/register.html',
                               token=token,
                               name=user.name)
        send_mail('博客注册验证', current_app.config['MAIL_USERNAME'],
                  [form.email.data], None, html)
        return redirect(url_for('main.index'))
    return render_template('auth/register.html', form=form)
Exemple #17
0
def change_email():
    form = EmailForm()
    if form.validate_on_submit():
        if current_user.email == form.old_email.data:
            current_user.confirmed = False
            db.session.add(current_user)
            db.session.commit()
            token = current_user.generate_activate_token()

            send_mail(current_user.email,
                      '账号重置',
                      'email/account_activate',
                      token=token,
                      username=current_user.username)
            current_user.email = form.new_email.data
            # current_user.confirmed = True
            # db.session.add(current_user)
            flash('邮箱发送成功')
            return redirect(url_for('main.index'))
        else:
            flash('原始邮箱不存在')
            return redirect(url_for('user.change_email.html'))
    return render_template('user/change_email.html', form=form)
Exemple #18
0
def export_posts(user_id):
	try:
		# read user posts from database
		user = User.query.get(user_id)
		_set_task_progress(0)
		data = []
		i = 0
		total_posts = user.posts.count()
		for post in user.posts.order_by(Post.timestamp.asc()):
			data.append({'body': post.body, 'timestamp': post.timestamp.isoformat() + 'Z'})
			# in production environment, time.sleep is not used.
			time.sleep(5)
			i += 1
			_set_task_progress(100 * i // total_posts)
		# send email with data to user
		send_mail('[Microblog] Your blog posts', sender=app.config['ADMINS'][0], recipients=[user.email], 
			text_body=render_template('email/export_posts.txt', user=user),
			html_body=render_template('email/export_posts.html', user=user),
			attachments=[('posts.json', 'application/json', json.dumps({'posts':data}, indent=4))], sync=True)
	except:
		# handle unexpected errors
		_set_task_progress(100)
		app.logger.error('Unhandled exception', exc_info=sys.exc_info())
Exemple #19
0
def login():
    form = LoginForm()
    if current_user.is_authenticated:
        return redirect_tag(current_user.tag)
    elif form.validate_on_submit():
        user_id = form.userid.data
        user_passwd = form.password.data
        remember = form.remember.data
        tag = form.tag.data
        if tag == 'student':
            user = Student.query.filter_by(idcard=user_id).first()
        elif tag == 'teacher':
            user = Teacher.query.filter_by(idcard=user_id).first()
        else:
            user = Admin.query.filter_by(idcard=user_id).first()
        if not user:
            flash("登录密码错误,请重新输入")
        elif user.verify_password(password=user_passwd):
            if user.tag == 'student':
                if user.confirmed:
                    flash("登录成功")
                    login_user(user, remember=remember)
                    return redirect_tag(tag)
                else:
                    token = id2Token(user.idcard)
                    send_mail(user.email,
                              '账户激活',
                              'email/active',
                              username=user.name,
                              token=token)
                    flash("您的账号还未激活,请查看邮件进行激活")
            else:
                flash("登录成功")
                login_user(user, remember=remember)
                return redirect_tag(tag)

    return render_template('login.html', form=form)
Exemple #20
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        # 根据表单数据创建用户对象
        u = User(username=form.username.data,
                 password=form.password.data,
                 email=form.email.data)
        # 将对象保存到数据库
        db.session.add(u)
        # 此时数据还没有保存到数据库中,没有id字段值,下面生成token时需要使用id
        # 因此等请求结束再提交时来不及的,故需要手动提交
        db.session.commit()
        # 发送用户的激活邮件
        # 生成用户激活的token
        token = u.generate_activate_token()
        send_mail(form.email.data,
                  '账户激活',
                  'email/activate',
                  username=form.username.data,
                  token=token)
        # 给出flash提示消息
        flash('邮件已发送,请点击链接完成用户激活')
        return redirect(url_for('main.index'))
    return render_template('user/register.html', form=form)
 def test_sending_email(self):
     """Tests the sending of emails"""
     send_mail('test_email', '*****@*****.**',
               ['*****@*****.**'],
               'This is a test mail', '<h1>This</h1><p> is a test mail</p>')
Exemple #22
0
def send_mail_async(mail_to, subject, template, **kwargs):
    send_mail(mail_to, subject, template, **kwargs)
Exemple #23
0
def send():
    send_mail('*****@*****.**', '账户激活', 'email/activate', username='******')
    return '邮件已发送'
Exemple #24
0
    def post(self):
        args = parser.parse_args()
        email = args.get('email')
        password = args.get('password')
        role = args.get('role')

        if email is None:
            return raise_error(400, "Email is missing")
        if password is None:
            return raise_error(400, "Password is missing")
        if role is None:
            return raise_error(400, "role is missing")

        # validate input data
        if valid_email(email) is None:
            return raise_error(400, "Invalid email format")
        if valid_password(password) is None:
            return raise_error(
                400, "Invalid password. Should be at least 5 "
                "characters long and include a number and a special "
                "character")
        if valid_role(role) is None:
            return raise_error(400, "Invalid role")

        user = User.query.filter_by(email=email).first()
        if user is not None:
            return raise_error(400, "User already exists")

        user = User(email=email, role=role)
        user.set_password(password)

        try:
            db.session.add(user)

            send_mail(
                to_emails=email,
                subject='Account Creation - One Acre',
                template='register',
                content='You have successfully created an account on One-Acre')
            db.session.commit()

        except:
            raise

        # Create our JWTs
        access_token = create_access_token(identity=email)
        refresh_token = create_refresh_token(identity=email)

        # Store the tokens in our store with a status of not currently revoked.
        add_token_to_database(access_token,
                              current_app.config['JWT_IDENTITY_CLAIM'])
        add_token_to_database(refresh_token,
                              current_app.config['JWT_IDENTITY_CLAIM'])

        data = {}
        data['access_token'] = access_token
        data['refresh_token'] = refresh_token
        data['user'] = user.serialize

        response = {"status": 201, "data": [data]}

        return response, 201
Exemple #25
0
def send():
    send_mail('*****@*****.**',
              '关于密码',
              'email/activate',
              username='******')
    return 'send mail'
Exemple #26
0
def user(username):
    user = User.query.filter_by(username=username).first_or_404()
    cancelform = CancelForm(prefix="a")
    editform = EditForm(request.form, prefix="b")

    if cancelform.submit.data and cancelform.validate():
        order = user.orders.filter_by(
            order_name=cancelform.confirm.data).first_or_404()
        order.order_flag = "cancelled"
        db.session.add(order)
        db.session.commit()
        send_mail(
            f"{cancelform.confirm.data} cancelled",
            current_user.email,
            ["*****@*****.**"],
            f"{cancelform.confirm.data} has been cancelled",
        )

    if editform.submit2.data and editform.validate():
        file = request.files.get(editform.profileimg.name)
        print(file)
        if file:
            filename = secure_filename(file.filename)

            file_extensions = [".jpg", ".jpeg", ".png"]
            good = False
            for file_extension in file_extensions:
                if filename.endswith(file_extension):
                    good = True

            if good:
                file.save(app.config["UPLOAD_FOLDER"] + filename)

                user.profile_img = "/static/profile_imgs/" + filename
                db.session.add(user)
                db.session.commit()
            else:
                flash("Not an image!")

        if editform.name.data:
            user_exists = User.query.filter_by(
                username=editform.name.data).first()
            if not user_exists:
                user.username = editform.name.data
                db.session.add(user)
                db.session.commit()
                return redirect(f"/account/{user.username}")
            else:
                flash("Username exists!")
        else:
            print("no!")
    ordered = user.orders.filter_by(order_flag="open")
    cancels = user.orders.filter_by(order_flag="cancelled")
    completed = user.orders.filter_by(order_flag="completed")

    if current_user.email in [
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
    ]:
        return render_template(
            "user.html",
            user=user,
            opens=ordered,
            cancels=cancels,
            completed=completed,
            cancel_form=cancelform,
            edit_form=editform,
            isAdmin=True,
        )
    else:
        return render_template(
            "user.html",
            user=user,
            opens=ordered,
            cancels=cancels,
            completed=completed,
            cancel_form=cancelform,
            edit_form=editform,
            isAdmin=False,
        )
Exemple #27
0
def resend_confirmation():
    token = current_user.generate_token()        
    send_mail(current_user.email, 'Confirm Your Account', \
        'auth/email/confirm', user=current_user, token=token)        
    flash('A new confirmation mail has been resent to your  email.')
    return redirect(url_for('main.index'))