Пример #1
0
def register_function():
    post_data = json.loads(request.data)
    username = post_data["username"]
    email = post_data["email"]
    password = post_data["password"]

    if not userutils.check_mail(email):
        return json.dumps(
            {
                "status": "error",
                "result": "please check your email"
            }
        )

    if len(str(password)) < 4:
        return json.dumps(
            {
                "status": "error",
                "result": "please get some serious password"
            }
        )

    user = User.objects(username=username).first()
    if user:
        return json.dumps(
            {
                "status": "error",
                "result": "this username already taken, sorry"
            }
        )

    if not username:
        return json.dumps(
            {
                "status": "error",
                "result": "please provide a username, it's required'"
            }
        )

    user = User.objects(email=email).first()
    if user:
        return json.dumps(
            {
                "status": "error",
                "result": "this email address already registered, sorry"
            }
        )

    user = User(username=username, email=email)
    user.password = userutils.encrypt(password)
    user.slug = userutils.make_slug(username)
    user.register_date = datetime.now()
    user.save()
    login_user(user)
    return json.dumps(
        {
            "status": "success",
            "result": "registeration successful"
        }
    )
Пример #2
0
    async def post(self):
        result = {'success': False, 'reason': None, 'data': None}
        req_json = json.loads(self.request.body)
        username = req_json['user_name']
        email = req_json['email']
        password = req_json['password']
        phone = req_json['phone']
        occupation = req_json['occupation']
        address = req_json['address']

        same_name_user = User.objects(username=username).first()
        if same_name_user is not None:
            result['reason'] = 'Username %s has already been existed' % (
                username, )
            self.write(json.dumps(result))
            self.finish()

        same_email_user = User.objects(email=email).first()
        if same_email_user is not None:
            result['reason'] = 'Email addr %s has already been registered' % (
                email, )
            self.write(json.dumps(result))
            self.finish()

        password = self._md5(password)
        _ = await User.create(username=username,
                              email=email,
                              password=password,
                              phone=phone,
                              occupation=occupation,
                              address=address)
        result['success'] = True
        self.write(json.dumps(result))
        self.finish()
Пример #3
0
def login_function():
    post_data = json.loads(request.data)
    username = post_data["username"]
    password = post_data["password"]
    remember_me = post_data["remember_me"]

    user = User.objects(username=username).first()
    if not user:
        return json.dumps(
            {
                "status": "error",
                "result": "we couldn't find that user, sorry!'"
            }
        )

    pwd_hash = user["password"]
    if userutils.check_password(password, pwd_hash):
        if remember_me:
            login_user(user, remember=True)
        else:
            login_user(user)

        return json.dumps(
            {
                "status": "success",
                "result": "user logged in"
            }
        )
    else:
        return json.dumps(
            {
                "status": "error",
                "result": "password seems to be incorrect, sorry!"
            }
        )
Пример #4
0
def forgot_password():
    """ The forgot password endpoint

    Attempt to create an url to be sent for password reset
    @return: The json answer {'success': true} upon successful email generation
    and sending  or an error description. If no mailgun configuration is
    provided abort with 404 (not found) status code
    """
    if not app.mailgun_client:
        abort(404)

    users = User.objects(email=request.form['email'])
    if users.count() == 0:
        return jsonify(error='Unknown email')
    user = users.first()
    if PasswordRenewToken.objects(user=user).count() > 0:
        renew_token = PasswordRenewToken.objects(user=user).first()
        hashed = b64encode(str(renew_token.id))
    else:
        renew_token = PasswordRenewToken(user=user)
        renew_token.save()
        hashed = b64encode(str(renew_token.id))
    reset_link = url_for('password_reset', token=hashed, _external=True)

    answer = send_password_reset(
        app.mailgun_client, app.config['MAILGUN_MAILING_ADDRESS'], user.email,
        render_template('email/forgot-password.txt', link=reset_link),
        render_template('email/forgot-password.html', link=reset_link))

    if answer.status_code == 200:
        return jsonify(success=True)
    else:
        return jsonify(error='Unable to send mail')
Пример #5
0
    async def post(self, *args, **kwargs):
        result = {'success': False, 'reason': None, 'data': None}
        req_data = json.loads(self.request.body)
        user_name = req_data['user_name']
        password = req_data['password']
        next_url = req_data['next_url']

        user = User.objects(username=user_name).first()
        if not user:
            result['reason'] = 'username %s is not existed' % (user_name, )
            self.write(json.dumps(result))
            self.finish()

        password = self._md5(password)
        if password != user.password:
            result['reason'] = 'password is not correct'
            self.write(json.dumps(result))
            self.finish()

        self._session['user_name'] = user_name
        self._session.save()
        result['success'] = True
        result['data'] = {'next': next_url}
        self.write(json.dumps(result))
        self.finish()
Пример #6
0
def save_post():
    post_data = json.loads(request.data)
    url = post_data["url"]
    json_data = make_readable(url)

    title = post_data["title"]
    slug = userutils.make_slug(title)
    author = User.objects(username=current_user.username).first()

    p = Post(title=title, slug=slug)
    p.saved_date = datetime.now()
    p.thumbnail = post_data["thumbnail"]
    p.url = url
    p.author = author
    p.content = json_data["content"]
    p.excerpt = json_data["excerpt"]
    p.domain = post_data["domain"]
    p.save()

    q.enqueue(insert_new_relation, p)

    author.posts.append(p)
    author.save()

    return "ok"
Пример #7
0
    def __init__(self, username, recepients):
        """

        Arguments:
        - `username`:
        - `recepients`:
        """
        self._username = username
        self._recepients = self.parse_recepients(recepients)
        self._user = User.objects(username=self._username).first()
Пример #8
0
    def __init__(self, username, recepients):
        """

        Arguments:
        - `username`:
        - `recepients`:
        """
        self._username = username
        self._recepients = self.parse_recepients(recepients)
        self._user = User.objects(username=self._username).first()
Пример #9
0
 def get(self):
     user = request.authorization
     uid = User.objects(username=user['username']).to_json()
     user = User.objects.get(username=user['username'])
     # testing celery by sending a mail asynchronously
     content = "celery test mail"
     subject = "celery test"
     # task = send_mail.delay(content,[user.email],subject)
     task = send_mail.apply_async(args=[content, user.email, subject],
                                  countdown=60)
     return Response(uid, mimetype="application/json", status=200)
Пример #10
0
 def get(self, page_no):
     users = User.objects()
     # The pagination method returns non json pagination object
     users = Pagination(users, page=int(page_no), per_page=2)
     # this gives list of user object
     users = users.items
     # using marshmallow to serialize
     obj = SudoUser(many=True)
     users = obj.dump(users)
     # using dumps to convert to json object
     users = json.dumps(users)
     # print(users)
     return Response(users, mimetype="application/json", status=200)
Пример #11
0
def profile():
    user = get_user()
    unsorted_freqs = User.objects(
        username=user.username
    ).item_frequencies(field="tags")

    freqs = sorted(
        unsorted_freqs.items(), key=operator.itemgetter(1),
        reverse=True
    )

    posts = Post.objects(author=user).order_by("-saved_date")
    posts = set_time_zones(posts)
    return render_template('profile.html', user=user, posts=posts, freqs=freqs)
Пример #12
0
def delete_post():
    post_data = json.loads(request.data)
    post_id = post_data["postId"]

    post = Post.objects(id=post_id).first()
    author = User.objects(username=current_user.username).first()
    if post.author != author:
        return json.dumps({"status": "not-allowed"})

    Relation.objects(post1=post).delete()
    Relation.objects(post2=post).delete()
    Post.objects(id=post_id).delete()

    return json.dumps({"status": "success"})
Пример #13
0
def login():
	#if g.user is not None and g.user.is_authenticated:
	#	return redirect('/index')
	form = LoginForm()
	if form.validate_on_submit():
		user = User.objects(username=form.username.data, password=form.password.data).first()
		if user:
			session['remember_me'] = form.remember_me.data
			login_user(user)
			return redirect( url_for('index'))
		else:
			flash("lalalal")
	return render_template('login.html' , 
							title = 'Sign In',
							form = form)
Пример #14
0
def generate_token(email, password):
    """ Generate a authentication token if given credentials are correct

    @param email: user's email address
    @param password: user's password
    @return: an authentication token upon correct login or None
    """
    user = User.objects(email=email).first()
    if user:
        if str(bcrypt.hashpw(password.encode('utf-8'),
                             user.password.encode('utf-8'))) == user.password:
            return check_user_token(user)
        else:
            return None
    else:
        return None
Пример #15
0
def signup():
    """ Signup endpoint

    Attempt to register a user to the website
    @return: A json response containing an email field upon success or an
    error description
    """
    if not Config.EMAIL_REGEX.match(request.form['email']):
        return jsonify(error='Invalid email address')

    elif User.objects(email=request.form['email']).count() > 0:
        return jsonify(error='Already registered email')

    else:
        user = User.create_and_store(request.form['email'],
                                     request.form['password'])
        return jsonify(email=user.email)
Пример #16
0
def request_beta_access():
    """ request beta access endpoint

    Attempt to add the user to the beta request list
    @return: {'success': true} upon successful subscription or an error
    description
    """
    email = request.form['email']
    if not Config.EMAIL_REGEX.match(email):
        return jsonify(error='Invalid email address')

    if User.objects(email=email).count() == 0 and BetaRequest.objects(
            email=email).count() == 0:
        BetaRequest(email=email, code=request.form['promo_code']).save()
        return jsonify(success=True)
    else:
        return jsonify(error='Already registered')
Пример #17
0
def save_post_pdf():
    post_data = request.form
    title = post_data.get("title")
    slug = userutils.make_slug(title)
    author = User.objects(username=current_user.username).first()

    print post_data.get("domain")

    if not title:
        return "please provide a title"

    p = Post(title=title, slug=slug)
    p.saved_date = datetime.now()
    p.thumbnail = post_data.get("thumbnail")
    p.url = post_data.get("url")
    p.author = author
    p.content = ""
    p.excerpt = ""
    p.post_type = "pdf"
    p.domain = post_data.get("domain")
    p.save()
    return redirect('/user/profile')
Пример #18
0
def load_user(user_id):
#	return User.query.get(int(id))
	# print user_id
	return User.objects(id=user_id).first()
Пример #19
0
 def test_empty_mongo(self):
     self.assertEquals(User.objects().count(), 0)
     self.assertEquals(Token.objects().count(), 0)
Пример #20
0
def load_user(username):
    return User.objects(username=username).first()
Пример #21
0
def get_user():
    if current_user.is_authenticated():
        user = User.objects(username=current_user.username).first()
        return user
    else:
        return None
Пример #22
0
 def test_empty_mongo(self):
     self.assertEquals(User.objects().count(), 0)
     self.assertEquals(Token.objects().count(), 0)