Ejemplo n.º 1
0
    def put(self, username):
        # gets current identity (username, password, admin, super_user)
        identity = current_identity
        # loads json data and parses looking for args
        data = User.parser.parse_args()

        # existing user needed to query if a change being made to username already exists
        existing_user = UserModel.find_by_username(data['username'])

        # looks for current username passed in '/user/<name>' exists and if not create
        user = UserModel.find_by_username(username)
        if identity.super_user == 0 and identity.username != username:
            return {'message': 'You are not authorized.'}, 403
        if user is None:
            user = UserModel(data['username'].lower(), data['password'],
                             data['site_location'].lower(), data['admin'],
                             data['super_user'], identity.username.lower())
        else:
            # it existed, now we must check a few other things to update a record
            # user is admin and no existing user
            if identity.super_user == 1 and existing_user is None:
                user.username = data['username'].lower()
                user.password = data['password']
                user.site_location = data['site_location'].lower()
                user.admin = data['admin']
                user.super_user = data['super_user']

                user.created_by = identity.username.lower()
            # user is updating his record but changing his username
            elif identity.username == username and existing_user is None:
                user.username = data['username'].lower()
                user.password = data['password']
                user.site_location = data['site_location'].lower()
                user.admin = user.admin
                user.super_user = user.super_user

                user.created_by = identity.username.lower()
            # user is updating his user record without a name change
            elif identity.username == existing_user.username:
                user.username = data['username'].lower()
                user.password = data['password']
                user.site_location = data['site_location'].lower()
                if identity.super_user == 1:
                    user.admin = data['admin']
                    user.super_user = data['super_user']
                else:
                    user.admin = user.admin
                    user.super_user = user.super_user

                user.created_by = identity.username.lower()
            else:
                return {'message': 'Username is already in use'}, 400

        user.save_to_db()

        return user.json()
Ejemplo n.º 2
0
    def register():
        form = RegisterForm()

        if form.validate_on_submit():
            user = UserModel()
            user.name = form.name.data
            user.email = form.email.data
            user.password = generate_password_hash(form.password.data)

            try:
                session_to_add(user)
                flash(message="Usuário criado com sucesso!",
                      category="success")
            except:
                flash(message="Erro, email já cadastrado.", category="warning")
                return redirect(url_for("register"))

            return redirect(url_for("login"))

        return render_template("register.html", form=form)