def update(self, view: InertiaResponse, validate: Validator):
        org = Organization.find(self.request.param("organization"))

        # TODO: add nullable rule
        # TODO: add postal_code rule
        errors = self.request.validate(
            validate.required(['name']),
            validate.length(['email', 'phone', 'city', 'region'], max=50),
            validate.length(['name'], min=2),
        )

        if errors:
            return self.request.redirect_to("organizations.edit", {
                "organization": org.id
            }).with_errors(errors).with_input()

        # TODO: how to update more quickly/cleanly ?
        org.name = self.request.input('name')
        org.email = self.request.input('email')
        org.phone = self.request.input('phone')
        org.address = self.request.input('address')
        org.city = self.request.input('city')
        org.region = self.request.input('region')
        org.postal_code = self.request.input('postal_code')
        org.country = self.request.input('country')
        org.save()

        self.request.session.flash('success', 'Organization updated.')
        return self.request.back()
    def update(self, request: Request, validate: Validator):

        errors = request.validate(
            validate.required("password"),
            validate.confirmed("password"),
            validate.length(
                "password",
                min=config("auth.password_min_length"),
                max=config("auth.password_max_length"),
            ),
        )

        if errors:
            request.session.flash("error", errors)
            return request.back()

        user = AUTH["model"].where("remember_token",
                                   request.param("token")).first()
        if user:
            user.password = bcrypt_password(request.input("password"))
            user.remember_token = None
            user.save()

            if request.user():
                auth.sign_out()

            request.session.flash(
                "success", "Your password has been reset. Login below.")
            return request.redirect("/users/sign-in")
    def store(self, view: InertiaResponse, validate: Validator):
        # TODO: add nullable rule
        # TODO: add postal_code rule
        errors = self.request.validate(
            validate.required(['name']),
            validate.length(['email', 'phone', 'city', 'region'], max=50),
            validate.length(['name'], min=2),
            # validate.length('address', max=150),
            # validate.length('country', max=2),
            # validate.length('postal_code', max=25),
            # validate.email('email'),
            # 'name': 'required|length:2,100',
            # 'email': 'length:3,50|email',
            # 'phone': 'length:3,50',
            # 'address': 'length:3,150',
            # 'city': 'length:3,50',
            # 'region': 'length:3,50',
            # 'country': 'length:0,2',
            # 'postal_code': 'length:2,25'
        )
        if errors:
            # return self.request.back().with_errors(errors).with_input()
            # return view.render('Organizations/Create').with_errors(errors).with_input()
            return self.request.redirect_to(
                'organizations.create').with_errors(errors).with_input()

        Organization.create(name=self.request.input('name'),
                            email=self.request.input('email'),
                            phone=self.request.input('phone'),
                            address=self.request.input('address'),
                            city=self.request.input('city'),
                            region=self.request.input('region'),
                            postal_code=self.request.input('postal_code'),
                            country=self.request.input('country'),
                            account_id=self.request.user().account.id)

        self.request.session.flash('success', 'Organization created.')
        return self.request.redirect_to('organizations')
Esempio n. 4
0
    def store(
        self,
        request: Request,
        mail_manager: MailManager,
        auth: Auth,
        validate: Validator,
    ):

        errors = request.validate(
            validate.required(["name", "email", "password"]),
            validate.email("email"),
            validate.not_in_database(
                "email",
                table="users",
                column="email",
                messages={"email": "This email address is already registered"},
            ),
            validate.confirmed("password"),
            validate.length(
                "password",
                min=config("auth.password_min_length"),
                max=config("auth.password_max_length"),
            ),
        )

        if errors:
            return return_with_errors(errors)

        auth.register({
            "name": request.input("name"),
            "password": request.input("password"),
            "email": request.input("email"),
        })

        user = User.where("email", request.input("email")).first()

        if isinstance(user, MustVerifyEmail):
            user.verify_email(mail_manager, request)

        # Login the user
        if auth.login(user.email, request.input("password")):
            request.session.flash(
                "success",
                "Your account has been successfully created. Check your email to verify your email address.",
            )
            return request.redirect("/")
Esempio n. 5
0
    def update(self, view: InertiaResponse, validate: Validator,
               upload: Upload):
        user = User.find(self.request.param("user"))
        if user.is_demo_user:
            self.request.session.flash(
                'error', 'Updating the demo user is not allowed.')
            return self.request.redirect(
                f"/users/{user.id}/edit"
            )  #.with_errors("Updating the demo user is not allowed.")

        errors = self.request.validate(
            validate.required(['first_name', 'last_name', 'email', 'owner']),
            validate.length(['first_name', 'last_name', 'email'], max=50),
            validate.email('email'),
            validate.when(validate.exists('password')).then(
                validate.strong('password', length=8, special=1))
            # TODO: add unique
        )

        if errors:
            return self.request.redirect(f"users/{user.id}").with_errors(
                errors).with_input()

        # update user
        user.first_name = self.request.input('first_name')
        user.last_name = self.request.input('last_name')
        user.email = self.request.input('email')
        user.owner = self.request.input('owner')

        if self.request.input('password'):
            pass

        photo_path = None
        if self.request.input('photo'):
            photo_path = upload.driver('disk').store(
                self.request.input('file_upload'), location='disk.profiles')
            user.photo_path = photo_path

        user.save()

        self.request.session.flash('success', 'User updated.')
        return self.request.back()
Esempio n. 6
0
    def store(self, view: InertiaResponse, validate: Validator,
              upload: Upload):
        errors = self.request.validate(
            validate.required(['email', 'first_name', 'last_name', 'owner']),
            validate.truthy('owner'),
            validate.length(['first_name', 'last_name', 'email'], max=50),
            validate.email('email'),
            # validate.when(
            #     validate.exists('photo')
            # ).then(
            #     validate.image('photo')
            # ), TODO: fix the error, file validators do not work with FieldStorage for now ...
            validate.when(validate.exists('password')).then(
                validate.strong('password', length=8, special=1)))

        if errors:
            # return self.request.back().with_errors(errors).with_input()
            # return view.render('Users/Create').with_errors(errors).with_input()
            return self.request.redirect('users/create').with_errors(
                errors).with_input()

        photo_path = None
        if self.request.input('photo'):
            # save file
            photo_path = upload.driver('disk').store(
                self.request.input('file_upload'), location='disk.profiles')

        self.request.user().account.users().create(
            first_name=self.request.input('first_name'),
            last_name=self.request.input('last_name'),
            email=self.request.input('email'),
            owner=self.request.input('owner'),
            password=self.request.input('password'),
            photo_path=photo_path)

        self.request.session.flash('success', 'User created.')
        return self.request.redirect('/users')