Esempio n. 1
0
class User(db.Document):
    username = db.StringField(required=True, unique=True)
    pwHash = db.StringField(required=True)
    email = db.EmailField(required=True)
    first_name = db.StringField()
    last_name = db.StringField()
    birthday = db.DateTimeField()
    address = db.StringField()

    @classmethod
    def userExists(cls, name):
        try:
            return User.objects(username=name).get()
        except DoesNotExist:
            return None

    @classmethod
    def checkCredentials(cls, name, passwd):
        try:
            checkedUser = User.objects(username=name).get()
            #The passwords are hashed and checked with bcrypt. Bcrypt checking method only accepts byte strings,
            #while mongodb stores them as unicode strings, hence the need to reencode them;
            encodedPasswd = passwd.encode('utf8')
            if bcrypt.checkpw(encodedPasswd,
                              checkedUser.pwHash.encode('utf8')):
                return checkedUser
            else:
                return None
        except DoesNotExist:
            return None
Esempio n. 2
0
class Artist(db.Document):

    name = db.StringField(unique=True, required = True)
    email = db.EmailField(unique=True, required=True)
    password = db.StringField(required=True)
    bio = db.StringField()
    link_to_work = db.StringField()
    background_photo_path = db.StringField(unique=True)
    profile_photo_path = db.StringField(unique=True)
    admin = db.BooleanField(default=False)
    active = db.BooleanField(default=True)
    registered_on = db.DateTimeField(default=datetime.datetime.now())

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<Artist {0}>'.format(self.name)
class Hacker(db.Document):
    first_name = db.StringField()
    last_name = db.StringField()
    username = db.StringField(unique=True)
    password = db.StringField()
    email = db.EmailField(unique=True)
    phone_number = db.StringField(validation=validate_phone_number)
    profile = db.EmbeddedDocumentField(HackerProfile)
    resume = db.URLField()
    emergency_contact = db.EmbeddedDocumentField(HackerEmergencyContact)
    accepted_forms = db.BooleanField()
    active_participant = db.BooleanField()

    def to_json(self):
        return {
            "first_name": self.first_name,
            "last_name": self.last_name,
            "username": self.username,
            "password": self.password,
            "email": self.email,
            "phone_number": self.phone_number,
            "profile": self.profile,
            "resume": self.resume,
            "emergency_contact": self.emergency_contact,
            "accepted_forms": self.accepted_forms,
            "active_participant": self.active_participant
        }
Esempio n. 4
0
class User(db.Document):
    email = db.EmailField(required=True, unique=True)
    password = db.StringField(required=True, min_length=6)

    def hash_password(self):
        self.password = generate_password_hash(self.password).decode('utf8')

    def check_password(self, password):
        return check_password_hash(self.password, password)
Esempio n. 5
0
class User(db.Document, UserMixin):
    '''
    A class that represents users who will use this system, their subscriptions
    and is used to manage their sessions
    '''
    name = db.StringField(required=True)
    email = db.EmailField(required=True, unique=True)
    password_hash = db.StringField(max_length=160)
    subscriptions = db.ListField(db.EmbeddedDocumentField(Subscription))
class User(db.Document):
    first_name = db.StringField()
    last_name = db.StringField()
    username = db.StringField(unique=True)
    password = db.StringField()
    email = db.EmailField(unique=True)
    role = db.StringField(choices=UserRole)

    @staticmethod
    def findOne(*args, **kwargs):
        """Finds one User"""
        excludes = kwargs.pop("excludes", [])
        return User.objects(*args, **kwargs).exclude("id", *excludes).first()

    def encode_auth_token(self) -> str:
        """Generates the auth token"""
        expires_at = datetime.utcnow() + timedelta(
            days=current_app.config["TOKEN_EXPIRATION_DAYS"],
            seconds=current_app.config["TOKEN_EXPIRATION_SECONDS"])
        payload = {
            "exp": expires_at,
            "iat": datetime.utcnow(),
            "sub": self.username
        }
        return jwt.encode(payload,
                          current_app.config.get("SECRET_KEY", "vivalapluto"),
                          algorithm="HS256"), expires_at

    @staticmethod
    def decode_auth_token(auth_token):
        """Decodes the auth token"""
        try:
            payload = jwt.decode(auth_token,
                                 current_app.config.get("SECRET_KEY"))
            return payload["sub"]
        except jwt.ExpiredSignatureError:
            return Forbidden()
        except jwt.InvalidTokenError:
            return Forbidden()
Esempio n. 7
0
class User(db.Document):

    username = db.StringField(unique=True, required = True)
    email = db.EmailField(unique=True, required=True)
    address = db.StringField(unique=True, required = True)
    password = db.StringField()
    admin = db.BooleanField(default=False)
    active = db.BooleanField(default=True)
    registered_on = db.DateTimeField(default=datetime.datetime.now())

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<User {0}>'.format(self.username)
Esempio n. 8
0
class User(db.Document):
    firstName = db.StringField(default=None)
    lastName = db.StringField(default=None)
    username = db.StringField(unique=True)
    email = db.EmailField(unique=True)
    password = db.StringField()
    phone = db.StringField(max_length=12)
    gender = db.StringField(max_length=10)
    branch = db.StringField(max_length=10)
    year = db.StringField(max_length=10)
    newUser = db.BooleanField(default=True)

    about = db.EmbeddedDocumentField(About, default=About)
    settings = db.EmbeddedDocumentField(Settings, default=Settings)
    # connections = db.ListField(db.ReferenceField(User))

    image_file = db.ImageField()
    cover_img = db.StringField()
    createdAt = db.DateTimeField(
        default=datetime.utcnow)  # utc to keep it universal
    updatedAt = db.DateTimeField(default=datetime.utcnow)

    def __repr__(self):
        return f"User('{self.username}','{self.email}')"