Example #1
0
 def test_fail_authentication(self):
     user = User({'username':'******',              
                   'hash':calculate_hash('testtest'),
                   'salt':'test',})
     self.assertEqual( user.authenticate('lolo'), False, 'Authentication should fail' )
     user = User({'username':'******',              
                   'hash':calculate_hash('testtest'),
                   'salt':'lol',})
     self.assertEqual( user.authenticate('test'), False, 'Authentication should fail' )
    def post(self, entity_id):

        existing_user = User.query(User.email == self.json.get('email').lower()).get()

        if existing_user:
            raise ResponseException('Error: {} already exists.'.format(self.json.get('email').lower()), no_error=True)

        if self.json['role'] == 'client':
            self.json['profile_pending'] = True

        if self.json['role'] == 'coach':
            self.json['approved'] = True

        model = CRUDService.do_post(self, entity_id, return_model=True)
        self.session['user'] = model

        self.resp = model.to_json()

        if model.role is Role.coach:
            add_task(
                '/admin/channel/users',
                'POST',
                payload=self.resp
            )
            self.send_approve_email()

        self.format_resp()
    def get(self):

        users = User.query().fetch(FETCH_LIMIT)
        for user in users:
            user.profile_pending = False

        ndb.put_multi(users)
        self.resp = {'ADMINS': 'NOTIFIED'}

        self.format_resp()
    def get(self, entity_id):

        if entity_id:
            self.resp = self.id_get()
        else:
            profile_pending = False
            if self.request.get('pending'):
                profile_pending = True

            users = User.query(User.profile_pending == profile_pending).order(-User.created).fetch(FETCH_LIMIT)
            self.resp = self.json_list(users)

        self.format_resp()
    def get_me_some(self, number):

        value = "1234"
        list_users = []

        for number in range(100, number + 100):
            data = dict(
                id=str(number),
                name="John {}".format(number),
                email="j@j{}.com".format(number),
                locale="en",
                approved=False,
                password=value,
                force_password=False,
                role="client",
                profile=dict(
                    times_logged_in=2,
                    phone="982374824",
                    personal=dict(
                        gender="Male",
                        highest_education="High School/GED",
                        marital_status="Divorced",
                        address=dict(
                            street="En la esquina", street2="", city="Poza Rica", state="Veracruz", postal="93562"
                        ),
                        living_status="",
                        living_duration="3 Months",
                        cell="6466546",
                        home="354565",
                        fb_link="facebook.com/hector",
                    ),
                    company=dict(
                        name="",
                        address=dict(street="", street2="", city="Poza", state="Calle de mi negocio", postal="31456"),
                        registered=True,
                        industry="Food",
                        industry_other="",
                        service_type="Financial",
                    ),
                    accepted_internet=True,
                ),
                expectations=dict(client="Many", coach="Not very many"),
            )

            list_users.append(data)

        users = [User.post_from_json_id(_json) for _json in list_users]
        ndb.put_multi(users)
        return users
Example #6
0
def login():
    data = {} # type: Dict[str, Any]
    if request.method == "POST":
        email = request.form["email"]
        password = request.form["password"]
        user = User.from_login(email, password)
        if user is None:
            data["error"] = "u/p"
        elif current_user.is_authenticated:
            data["error"] = "logged"
        else:
            login_user(user)
            data["logged_in"] = True
    data.update(page_data("login"))
    data.update(request.args.to_dict())
    return render_template("login.html.j2", **data)
    def post(self, service):

        if service == 'password':
            email = self.json.get('email')
            user = User.query(User.email == email).get()
            if not user:
                raise ResponseException(PROP_NOT_FOUND.format('User', email), no_error=True)

            MailHandler.send_mail(
                email,
                'Password Reset'.format(user.name),
                '{}/password-reset.html'.format(user.locale),
                {
                    'user': user.to_json(),
                    'reset': '{}#/password-reset/{}'.format(self.proto_host, user.key.urlsafe()),
                },
                bcc=self.config.notify
            )

            self.resp = {}
            self.format_resp()
Example #8
0
    def get(self):

        user = self.session.get('user', None)

        try:
            user = User.get_instance(user.key.urlsafe(), no_error=True)
        except Exception as e:
            logging.warning('session error: {}'.format(e))

        if not user:
            return self.redirect("/")

        self.session['user'] = user

        logging.info("session user: {}".format(user))

        self.template_values = {
            'user': json.dumps(user.to_json(), indent=4, separators=(',', ': ')),
            'host_url': self.proto_host,
            'pair': {},
            'pairs': []
        }

        # get coach from client_id
        if user.role == Role.client:
            client_id = user.key.urlsafe()
            pair = self.get_coach(client_id)
            self.template_values['pair'] = json.dumps(pair)

        else:
            coach_id = user.key.urlsafe()
            pairs = self.get_clients(coach_id)
            self.template_values['pairs'] = json.dumps(pairs)


        self.template_file = 'app/release/app.html'
        if self.request.get('debug', None) or self.app.debug:
            self.template_file = 'app/build/app.html'

        self.send_resp()
Example #9
0
def load_user(user_id):
    return User.get(user_id)
Example #10
0
def load_user(u_id: str) -> User:
    return User.from_id(u_id)
Example #11
0
 def test_authentication(self):
     user = User({'username':'******',              
                   'hash':calculate_hash('testtest'),
                   'salt':'test',})
     self.assertEqual( user.authenticate('test'), True, 'User should be now authenticated succesfully' )
    def post(self, user_id):

        lang_map = {
            'en': {
                'account': 'Account Not Found',
                'pass': '******',
                'approved': 'User has not been approved',
                'disabled': 'User has been disabled'
            },
            'es-mx': {
                'account': 'Account Not Found',
                'pass': '******',
                'approved': 'User has not been approved',
                'disabled': 'User has been disabled'
            },
            'pt-br': {
                'account': 'Account Not Found',
                'pass': '******',
                'approved': 'User has not been approved',
                'disabled': 'User has been disabled'
            }
        }

        locale = self.json.get('locale')

        map = lang_map[locale]

        user = User.query(User.email == self.json['email']).get()
        if not user:
            msg = map['account']
            raise ResponseException(msg, no_error=True)

        if user.profile_pending and user.role == Role.client:
            if not bcrypt.hashpw(self.json['password'], user.password) == user.password:

                msg = map['pass']
                raise ResponseException(msg, no_error=True)

            self.login(user)
            self.resp = {'redirect': '/app#/profile/create'}
            return self.format_resp()


        if not user.approved:
            msg = map['approved']
            raise ResponseException(msg, no_error=True)

        if not user.status:
            msg = map['disabled']
            raise ResponseException(msg, no_error=True)

        if not bcrypt.hashpw(self.json['password'], user.password) == user.password:
            msg = map['pass']
            raise ResponseException(msg, no_error=True)

        client_role_string = self.json.get('role', None)
        if client_role_string:
            client_role = Role.lookup_by_name(client_role_string)

        if not user.profile:
            user.profile = Profile()

        self.login(user)
        self.resp = user.to_json()
        self.format_resp()