示例#1
0
文件: models.py 项目: Ekan5h/fras
def populate_sample_data():
    with db:
        u = User(login_id="test",
                 password_hashed=pbkdf2_sha256.hash("test"),
                 role="ST",
                 email="*****@*****.**",
                 first_name="TEST",
                 last_name="USER",
                 inst_id="CSB1000")
        u.save()

        u = User(login_id="admin",
                 password_hashed=pbkdf2_sha256.hash("admin"),
                 role="SU",
                 email="*****@*****.**",
                 first_name="ADMIN",
                 last_name="USER",
                 inst_id="CSB1001")
        u.save()

        u = User(login_id="test1",
                 password_hashed=pbkdf2_sha256.hash("test1"),
                 role="ST",
                 email="*****@*****.**",
                 first_name="TEST",
                 last_name="USER1",
                 inst_id="CSB1002",
                 is_locked='Y')
        u.save()
示例#2
0
def test_mark_attendance(client):
    """ Tests mark attendance """
    # Add test users
    with db:
        u = User(login_id="A",
                 password=pbkdf2_sha256.hash("A"),
                 role="GN",
                 email="*****@*****.**",
                 first_name="A",
                 last_name="",
                 inst_id="CSB1000")
        u.save()
        u = User(login_id="B",
                 password=pbkdf2_sha256.hash("B"),
                 role="GN",
                 email="*****@*****.**",
                 first_name="B",
                 last_name="",
                 inst_id="CSB1000")
        u.save()
        u = User(login_id="C",
                 password=pbkdf2_sha256.hash("C"),
                 role="GN",
                 email="*****@*****.**",
                 first_name="C",
                 last_name="",
                 inst_id="CSB1000")
        u.save()

    # Test incorrect data format
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.post('/fras/app/mark_attendance',
                           data={'file': './../test_data/modi_grp1.jpeg'})
    assert response.json["status"] == "ERROR"

    # Test empty file name
    data = {'group_photo': (io.BytesIO(b'image data'), '')}
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.post('/fras/app/mark_attendance', data=data)
    assert response.json["status"] == "ERROR"

    # Successful test
    data = {'group_photo': (io.BytesIO(b'image data'), 'image.jpg')}
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.post('/fras/app/mark_attendance', data=data)
    assert response.json["status"] == "OK"
    assert response.json["body"]["names_found"] == ['A', 'B', 'C']
示例#3
0
文件: run.py 项目: OleksiiF/rest_api
def before_insert(resource, documents):
    if resource == 'users':
        for document in documents:
            document['password'] = pbkdf2_sha256.hash(document['password'])
    else:
        categories = current_app.data.driver.db['categories']
        new_bulk = []

        for document in documents:
            _id = ObjectId(document.get('parent_category'))
            category = categories['categories'].find({
                '_id': _id
            })
            if category:
                if resource == 'items':
                    new_bulk.append(UpdateOne(
                        {'_id': _id},
                        {'$inc': {'items': 1}}
                    ))

                elif resource == 'categories':
                    if resource == 'items':
                        new_bulk.append(UpdateOne(
                            {'_id': _id},
                            {'$inc': {'child_categories': 1}}
                        ))

        try:
            categories.bulk_write(new_bulk)
        except BulkWriteError as bwe:
            pprint(bwe.details)
        except pymongo.errors.InvalidOperation:
            pass
def create_director(dirEmail, password, facultyEmail, start_date):

    try:
        # Faculty.objects.filter()faculty_id=faculty_ID)
        AuthObj = AuthTable.objects.get(emailID=facultyEmail)
        Faculty.objects.get(faculty_id=Employee.objects.get(emp_ID = AuthObj))
    except:
        print('Director should be Faculty')
        return

    try:
        aa = Director.objects.get(end_date=None)
        aa.end_date = datetime.date.today()
        aa.save()
        AuthTable.objects.get(aa.dir_ID).delete()
    except:
        pass

    Authobj = AuthTable()
    Authobj.emailID = dirEmail
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'DIRECTOR'
    Authobj.save()


    EmpObj = Employee.objects.get(emp_ID=AuthObj)
    EmpObj.current_role = 'DIRECTOR'
    EmpObj.save()

    DirObj = Director()
    DirObj.dirEmail = dirEmail
    DirObj.faculty_ID = Faculty.objects.get(faculty_id=EmpObj)
    DirObj.start_date = start_date
    DirObj.save()
def createFaculty(emp_ID, password, dept_ID, first_name, last_name, date_of_birth, gender, address, PAN,
            date_of_join, leave_available, borrow_available, grade, past_exp):
    Authobj = AuthTable()
    Authobj.emailID = emp_ID
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'FACULTY'
    Authobj.save()

    newOBJ = AuthTable.objects.get(emailID=emp_ID)
    empObj = Employee()
    empObj.emp_ID = newOBJ
    empObj.first_name = first_name
    empObj.last_name = last_name
    empObj.date_of_birth = date_of_birth
    empObj.gender = gender
    empObj.address = address
    empObj.PAN = PAN
    empObj.date_of_join = date_of_join
    empObj.current_role = 'Faculty'
    empObj.leave_available = leave_available
    empObj.borrow_available = borrow_available
    empObj.grade_of_employment = grade
    empObj.past_experience = past_exp
    empObj.save()

    FacultyObj = Faculty()
    FacultyObj.faculty_id = emp_ID
    FacultyObj.dept_ID = dept_ID
    FacultyObj.save()
示例#6
0
    def login_user(self, username: str, password: str, captcha: str,
                   captcha_id: str, ip: str, browser: str) -> dict:
        # verify captcha in the first place.
        redis = Redis().r
        correct_captcha = redis.get(captcha_id)
        if correct_captcha is None:
            return {
                "status_code": HTTPStatus.BAD_REQUEST,
                "message": "验证码已过期",
                "status": False
            }
        elif correct_captcha.lower() == captcha.lower():
            redis.expire(captcha_id, 0)
        else:
            return {
                "status_code": HTTPStatus.FORBIDDEN,
                "message": "验证码错误",
                "status": False
            }
        # check user account is locked.

        data = self.db["users"].find_one({"username": username}) or {}
        if data.get("status", {}).get("disable"):
            return {
                "status_code": HTTPStatus.FORBIDDEN,
                "status": False,
                "message": data.get("status", {}).get("reason")
            }

        returned_value = {"status_code": 0, "message": ""}

        if data:
            # try to login
            stored_password = data["password"]
            if pbkdf2_sha256.verify(password, stored_password):
                returned_value["status_code"] = HTTPStatus.OK
            else:
                returned_value["status_code"] = HTTPStatus.FORBIDDEN
                returned_value["message"] = "用户名或密码错误"

        else:
            # register
            hash_value = pbkdf2_sha256.hash(password)
            try:
                self.db["users"].insert_one(
                    dict(username=username,
                         password=hash_value,
                         date=ts_date(),
                         ip=ip,
                         browser=browser))
                returned_value["status_code"] = HTTPStatus.CREATED

            except Exception as e:
                returned_value[
                    "status_code"] = HTTPStatus.INTERNAL_SERVER_ERROR
                returned_value["message"] = str(e)

        returned_value["username"] = data.get("username")
        returned_value["group"] = data.get("group", ["user"])
        return returned_value
def createCCFS(emp_ID, password, dept_ID, first_name, last_name, date_of_birth, gender, address, PAN,
            date_of_join, leave_available, borrow_available, grade, past_exp,contact):
    Authobj = AuthTable()
    Authobj.emailID = emp_ID
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'CCFS'
    Authobj.save()

    newOBJ = AuthTable.objects.get(emailID=emp_ID)
    empObj = Employee()
    empObj.emp_ID = newOBJ
    empObj.first_name = first_name
    empObj.last_name = last_name
    empObj.date_of_birth = date_of_birth
    empObj.gender = gender
    empObj.address = address
    empObj.PAN = PAN
    empObj.date_of_join = date_of_join
    empObj.current_role = 'CCFS'
    empObj.leave_available = leave_available
    empObj.borrow_available = borrow_available
    empObj.grade_of_employment = grade
    empObj.past_experience = past_exp
    empObj.contact = contact
    empObj.save()

    CCFSObj = Ccfs()
    CCFSObj.ccfs_id = empObj
    CCFSObj.dept_ID = Department.objects.get(dept_ID=dept_ID)
    CCFSObj.save()
示例#8
0
    def login_user(self, username: str, password: str, ip: str,
                   browser: str) -> dict:
        data = self.db["users"].find_one({"username": username})
        returned_value = {"status_code": 0, "message": ""}

        if data:
            # try to login
            stored_password = data["password"]
            if pbkdf2_sha256.verify(password, stored_password):
                returned_value["status_code"] = HTTPStatus.OK
            else:
                returned_value["status_code"] = HTTPStatus.FORBIDDEN
                returned_value["message"] = "用户名或密码错误"

        else:
            hash_value = pbkdf2_sha256.hash(password)
            try:
                self.db["users"].insert_one(
                    dict(username=username,
                         password=hash_value,
                         date=ts_date(),
                         ip=ip,
                         browser=browser))
                returned_value["status_code"] = HTTPStatus.CREATED

            except Exception as e:
                returned_value[
                    "status_code"] = HTTPStatus.INTERNAL_SERVER_ERROR
                returned_value["message"] = str(e)

        return returned_value
示例#9
0
def createEvent(name,begin,end,location,description,leader,img):
	size=6
	chars=string.ascii_uppercase + string.digits
	unHashed = ''.join(random.choice(chars) for _ in range(size))
	qr_code = pbkdf2_sha256.hash(unHashed)
	if(name == '' or
	   begin == '' or
	   end == '' or
	   location == '' or
	   description == '' or
	   leader== '' or
	   img==''):
		return 400
	event = Event(
			name=name,
			begin=begin,
			end=end,
			location=location,
			desc=description,
			leader=leader,
			cancel=0,
			img=img,
			qr_code=qr_code,
			created= datetime.datetime.now(),
			link= None
		)
	return Persister.persist_object(event)
def create_registrar(regEmail, password, staffEmail, start_date):

    try:
        AuthObj = AuthTable.objects.get(emailID=staffEmail)
        StaffObj = Staff.objects.get(staff_id=Employee.objects.get(emp_ID=AuthObj))
    except:
        print('This employee is not staff')
        return

    try:
        aa = Registrar.objects.get(end_date=None)
        aa.end_date = datetime.date.today()
        aa.save()
        AuthTable.objects.get(emailID=aa.regEmail).delete()
    except:
        pass


    Authobj = AuthTable()
    Authobj.emailID = regEmail
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'REGISTRAR'
    Authobj.save()

    EmpObj = Employee.objects.get(emp_ID=AuthObj)
    EmpObj.current_role = 'REGISTRAR'
    EmpObj.save()


    RegObj = Registrar()
    RegObj.regEmail = regEmail
    RegObj.staff_id = StaffObj
    RegObj.start_date = start_date
    RegObj.save()
示例#11
0
 def _changepass(self):
     h1 = pw.hash(getpass("Enter new passphrase: "))
     if not pw.verify(getpass("Confirm passphrase: "), h1):
         print("Passphrases do not match.")
         return False
     self.model["hash"] = h1
     print("Passphrase set. Change must be manually uploaded via 'commit'.")
     return True
示例#12
0
def updateEvent(id, name, begin, end, location, description, leader, img):
    size = 6
    chars = string.ascii_uppercase + string.digits
    unHashed = ''.join(random.choice(chars) for _ in range(size))
    qr_code = pbkdf2_sha256.hash(unHashed)
    if (id == '' or name == '' or begin == '' or end == '' or location == ''
            or description == '' or leader == '' or img == ''):
        return 400
    return Persister.update_object(id, name, begin, end, location, description,
                                   leader, img, qr_code)
示例#13
0
def generate_and_save_wallet(**kwargs):
    password = kwargs.pop('password', None)
    password_hash = pbkdf2_sha256.hash(password) if password is not None else None

    link_id = uuid()
    wallet = MinterWallet.create()
    return PushWallet.create(
        link_id=link_id,
        address=wallet['address'],
        mnemonic=wallet['mnemonic'],
        password_hash=password_hash, **kwargs)
示例#14
0
def signup_view(request):
    if request.method == 'POST':
        if not request.POST['password'] or not request.POST['username']:
            messages.add_message(request, messages.ERROR,
                                 'Please provide a username/password')
            return render(request, 'alpha/signup.html')
        elif not request.POST['confirmpassword']:
            messages.add_message(request, messages.ERROR,
                                 'Please enter confirm password')
            return render(
                request, 'alpha/signup.html', {
                    'username': request.POST['username'],
                    'password': request.POST['password']
                })

        form = userForm(request.POST)

        if form.is_valid():
            try:
                username = form.cleaned_data['username']
                # print(username)
                userInstance = User.objects.get(username=username)
                messages.add_message(request, messages.ERROR,
                                     'User already exists. Please login.')

            except User.DoesNotExist:
                userInstance = None

            if (userInstance == None):
                password = request.POST['password']
                confirmpassword = request.POST['confirmpassword']

                if password == confirmpassword:
                    hash = pbkdf2_sha256.hash(password)

                    pbkdf2_sha256. \
                        form = User()
                    form.username = request.POST['username']
                    # print(hash)
                    form.password = hash
                    # print(form.password)
                    form.save()
                else:
                    messages.add_message(request, messages.ERROR,
                                         "Password mismatch.")
                    context = {'username': username, 'password': password}
                    return render(request, 'alpha/signup.html', context)
            return redirect('/')
        else:
            messages.add_message(request, messages.ERROR, '')
            print(form.errors)

    else:
        return render(request, 'alpha/signup.html')
示例#15
0
def populate_sample_data():
    """ Populates the database with sample data """
    with db:
        u = User(login_id="test",
                 password=pbkdf2_sha256.hash("test"),
                 role="ST",
                 email="*****@*****.**",
                 first_name="TEST",
                 last_name="USER",
                 inst_id="CSB1000")
        u.save()

        u = User(login_id="admin",
                 password=pbkdf2_sha256.hash("admin"),
                 role="SU",
                 email="*****@*****.**",
                 first_name="ADMIN",
                 last_name="USER",
                 inst_id="CSB1001")
        u.save()
示例#16
0
    def mutate(root, info, username, password):
        user = UserModel(username=username,
                         password=pbkdf2_sha256.hash(password),
                         articles=[])
        user.save()

        return UserCreate.Success(
            user=user,
            refresh_token=create_refresh_token(user),
            access_token=create_access_token(user),
        )
示例#17
0
def init_database():
    db.drop_all()
    db.create_all()

    add(Url(url='/music-archive/api/v1/artists', description='LIST artist'))
    add(User(id=1, username='******', password=pbkdf2_sha256.hash('1234')))
    add(Artist(id=1, name='Dua Lipa', genres='Pop, R&B',
               born='22 August 1995'))
    add(
        Artist(id=2,
               name='Shirley Ann Manson',
               genres='Alternative rock',
               born='26 de agosto de 1966'))
示例#18
0
def authorize():
    session = Session()
    try:
        auth_response = session.post(
            f'http://{FACE_RECOGNITION_SERVER}/auth',
            json={
                'username': FACE_RECOGNITION_API_LOGIN,
                'password': pbkdf2_sha256.hash(FACE_RECOGNITION_API_PASSWORD)
            })
    except requests.ConnectionError:
        print('Server authentication error')
    else:
        access_token = auth_response.json()['jwt']
        session.headers.update({'Authorization': f'Bearer {access_token}'})
    return session
def givePost(postEmail, password, ccfsEmail,start_date,name):

    try:
        AuthObj = AuthTable.objects.get(emailID=ccfsEmail)
        CCFSObj = Ccfs.objects.get(ccfs_id=Employee.objects.get(emp_ID=AuthObj))

        # CCFSObj = Ccfs.objects.get(ccfs_id=ccfs_id)
    except:
        print('This employee is not CCFS')
        return

    try:
        aa = Post.objects.filter(end_date=None)
        for postobj in aa.iterator():
            if postobj.name == name:
                postobj.end_date = datetime.date.today()
                postobj.save()

                EmpObj = Employee.objects.get(emp_ID=postobj.ccfs.ccfs_id)
                EmpObj.current_role = 'CCFS'
                EmpObj.save()
                AuthTable.objects.get(emailID = postobj.post_ID).delete()

                # EmpObj = Employee.objects.get(emp_ID=asreg.staff_id.staff_id)
                # EmpObj.current_role = 'STAFF'
                # EmpObj.save()
                # AuthTable.objects.get(emailID=asreg.assRegEmail).delete()

    except:
        print('Something wrong')
        pass

    Authobj = AuthTable()
    Authobj.emailID = postEmail
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = name
    Authobj.save()

    EmpObj = Employee.objects.get(emp_ID=AuthObj)
    EmpObj.current_role = name
    EmpObj.save()

    postObj = Post()
    postObj.postEmail = postEmail
    postObj.ccfs = CCFSObj
    postObj.start_date = start_date
    postObj.name = name
    postObj.save()
示例#20
0
def test_login_logout(client):
    """ Test for login and logout """
    # Test successful login, current user and logout
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.get('/fras/app/current_user')
    assert response.json["body"]["user"] == session["user"]
    response = client.get('/fras/app/logout')
    response = client.get('/fras/app/current_user')
    assert response.json["status"] == "ERROR"

    # Test unsuccesful login request
    response = client.post('/fras/app/login',
                           data={
                               'login_id': 'admin',
                               'password': '******'
                           })
    assert response.json["status"] == "ERROR"

    # Test incorrect password
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    assert response.json["status"] == "ERROR"

    # Test locked user
    with db:
        u = User(login_id="locked",
                 password=pbkdf2_sha256.hash("locked"),
                 role="ST",
                 email="*****@*****.**",
                 first_name="LOCKED",
                 last_name="USER",
                 inst_id="CSB1000",
                 is_locked=True)
        u.save()
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    assert response.json["status"] == "ERROR"
示例#21
0
def editprofile(request):
    userid = request.session.get('userid')
    if userid:
        if request.method == 'POST' and request.is_ajax():
            print("here")
            Firstname = request.POST.get("firstname").strip()
            Lastname = request.POST.get("lastname").strip()
            Email = request.POST.get("email").strip()
            password = request.POST.get("password").strip()
            encryptedpass= pbkdf2_sha256.hash(request.POST.get("password"))
            stuff = Userreg.objects.filter(id=userid).update(Firstname=Firstname, Lastname=Lastname, Useremail=Email,
                                                             password=encryptedpass)

            print("here2")
            return JsonResponse({"update": "success"})
        print("nothere")
        return JsonResponse({"update": "fail"})
示例#22
0
def test_kface_view(client):
    """ Test kface view view """
    # NO kface view
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.get('/fras/app/kface/1')
    assert response.json["status"] == "ERROR"

    # Successful kface view
    with db:
        u = User(login_id="A",
                 password=pbkdf2_sha256.hash("A"),
                 role="GN",
                 email="*****@*****.**",
                 first_name="A",
                 last_name="",
                 inst_id="CSB1000")
        u.save()

    img = cv2.imread('./../../test_data/nmodi.jpg')
    data = {
        'photo': str(cv2.imencode('.jpg', img)[1].tobytes()),
        'id': 2,
        'user': {
            'login_id': "A",
            'password': '******',
            'role': "GN",
            'email': "*****@*****.**",
            'first_name': "A",
            'last_name': "",
            'inst_id': "CSB1000",
        }
    }
    response = client.post('/fras/app/login',
                           json={
                               'login_id': 'admin',
                               'password': '******'
                           })
    response = client.post('/fras/app/kface_save', json=data)

    response = client.get('/fras/app/kface/5')
    assert response.json["status"] == "ERROR"
def create_assist_registrar(aregEmail, password, staffEmail, start_date):

    try:
        AuthObj = AuthTable.objects.get(emailID=staffEmail)
        StaffObj = Staff.objects.get(staff_id=Employee.objects.get(emp_ID=AuthObj))
        department = StaffObj.dept_ID
    except:
        print('This employee is not staff')
        return

    Authobj = AuthTable()
    Authobj.emailID = aregEmail
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'ASSIST_REGISTRAR'
    Authobj.save()

    try:
        aa = AssistRegistrar.objects.filter(end_date=None)
        for asreg in aa.iterator():
            if asreg.staff_id.dept_ID == department:
                asreg.end_date = datetime.date.today()
                asreg.save()
                # EmpObj = Employee.objects.get(emp_ID=asreg.staff_id)
                # EmpObj.current_role = 'STAFF'
                # EmpObj.save()
                # AuthTable.objects.get(emailID = asreg.areg_ID).delete()

                EmpObj = Employee.objects.get(emp_ID=asreg.staff_id.staff_id)
                EmpObj.current_role = 'STAFF'
                EmpObj.save()
                AuthTable.objects.get(emailID=asreg.assRegEmail).delete()

    except:
        pass

    EmpObj = Employee.objects.get(emp_ID=AuthObj)
    EmpObj.current_role = 'ASSIST_REGISTRAR'
    EmpObj.save()

    AregObj = AssistRegistrar()
    AregObj.assRegEmail = aregEmail
    AregObj.staff_id = StaffObj
    AregObj.start_date = start_date
    AregObj.save()
示例#24
0
def create_campaign(recipients,
                    sender,
                    cost,
                    campaign_pass=None,
                    wallet_pass=None,
                    target=None,
                    customization_id=None):
    campaign_pass_hash = pbkdf2_sha256.hash(
        campaign_pass) if campaign_pass is not None else None
    campaign_wallet = generate_and_save_wallet()
    campaign = PushCampaign.create(wallet_link_id=campaign_wallet.link_id,
                                   status='open',
                                   cost_pip=str(to_pip(cost)),
                                   company=sender,
                                   password_hash=campaign_pass_hash,
                                   customization_setting_id=customization_id)

    for info in recipients.values():
        balance = str(to_pip(info['amount'] + 0.01))
        wallet = generate_and_save_wallet(
            sender=sender,
            recipient=info['name'],
            password=wallet_pass,
            campaign_id=campaign.id,
            virtual_balance=balance,
            customization_setting_id=customization_id)
        info['token'] = wallet.link_id

    Recipient.bulk_create([
        Recipient(email=email,
                  campaign_id=campaign.id,
                  name=info['name'],
                  amount_pip=str(to_pip(info['amount'])),
                  wallet_link_id=info['token'],
                  target_shop=target) for email, info in recipients.items()
    ],
                          batch_size=100)
    return campaign, campaign_wallet
def create_hod(hodEmail,password, facultyEmail, start_date):
    try:
        AuthObj = AuthTable.objects.get(emailID=facultyEmail)
        FacultyObj = Faculty.objects.get(faculty_id=Employee.objects.get(emp_ID=AuthObj))
        department = FacultyObj.dept_ID
    except:
        print('This employee is not faculty')
        return

    try:
        aa = Hod.objects.filter(end_date=None)
        for hod in aa.iterator():
            if department == hod.faculty_ID.dept_ID:
                hod.end_date = datetime.date.today()
                hod.save()
                EmpObj = Employee.objects.get(emp_ID=hod.faculty_ID.faculty_id)
                EmpObj.current_role = 'FACULTY'
                EmpObj.save()
                AuthTable.objects.get(emailID=hod.hodEmail).delete()
    except:
        pass

    Authobj = AuthTable()
    Authobj.emailID = hodEmail
    Authobj.password = pbkdf2_sha256.hash(password)
    Authobj.role = 'HOD'
    Authobj.save()

    EmpObj = Employee.objects.get(emp_ID=AuthObj)
    EmpObj.current_role = 'HOD'
    EmpObj.save()

    HodObj = Hod()
    HodObj.hodEmail = hodEmail
    HodObj.faculty_ID = FacultyObj
    HodObj.start_date = start_date
    HodObj.save()
示例#26
0
def userlogin():
    if request.method == "POST":
        try:
            connection = psycopg2.connect(
                user="******",
                password="******",
                host="localhost",
                port="5432",
                database="postgres",
            )

            cursor = connection.cursor()

            email_entered = request.form["email"]
            password_entered = request.form["password"]
            print(email_entered, password_entered)
            record_to_search = (email_entered, )
            sql_login_query = """SELECT * FROM users WHERE users.email = %s"""
            cursor.execute(sql_login_query, record_to_search)
            # hash the password entered by the user
            hash = pbkdf2_sha256.hash(password_entered)
            # check the hashed password
            pbkdf2_sha256.verify(password_entered, hash)
            print("Password successful")
            # check the role of the user
            sql_role_query = """SELECT users.designation, 
             users.motp, users.eotp, users.phone, users.email, users.designation FROM users WHERE users.email = %s"""
            cursor.execute(sql_role_query, record_to_search)
            query = cursor.fetchone()
            designation = query[0]
            motp = query[1]
            eotp = query[2]
            phone = query[3]
            email = query[4]
            role = query[5]
            print(designation, motp, eotp, phone, email)
            if (motp == False) and (eotp == False):
                # Need of OTP
                client = Client(account_sid, auth_token)
                # send OTP on email
                email_input = email
                # the account which sends OTP , edit values in other.py
                usr_mail = user_email_id
                # "" password, edit values in other.py
                usr_pwd = user_pwd
                # generating email OTP
                # selects a random number from a list(nums) in other.py file
                # this method will be used only for testing purposes
                email_otp = random.choice(nums)
                content = (
                    "Hello Use This OTP to sign in to your SS RPA account! Do not Share this code: "
                    + str(email_otp))

                msg = EmailMessage()
                msg["Subject"] = "OTP Verification For SS RPA Login."
                msg["From"] = usr_mail
                msg["To"] = email_input
                msg.set_content(content)

                with smtplib.SMTP(
                        "smtp.gmail.com", 587
                ) as smtp:  # make sure to enable "less secure apps" on google before sending (not recievig) mail , link:https://myaccount.google.com/lesssecureapps
                    smtp.ehlo()
                    smtp.starttls()
                    smtp.ehlo()

                    smtp.login(usr_mail, usr_pwd)
                    smtp.send_message(msg)
                print("Printing email OTP")
                print(email_otp)

                # send OTP on mobile
                phone_num = phone
                # right now, for indian numbers only
                phone_number = "+91" + str(phone_num)
                # generating email OTP
                # selects a random number from a list(nums) in other.py file
                # this method will be used only for testing purposes
                mobile_otp = random.choice(nums)
                msg = ("Your One Time Password(OTP) for SS RPA is:" +
                       str(mobile_otp) + " Do Not Share This Code!")
                message = client.messages.create(
                    body=msg,
                    from_=str(from_phone),
                    status_callback=
                    "http://postb.in/1234abcd",  # you can use this too maybe(?)
                    to=str(phone_number),
                )
                print("Mobile OTP")
                print(mobile_otp)
                # update database with motp and eotp
                sql_update_m_query = (
                    """Update users set m_otp_received = %s where email = %s"""
                )
                cursor.execute(sql_update_m_query, (mobile_otp, email))
                sql_update_e_query = (
                    """Update users set e_otp_received = %s where email = %s"""
                )
                cursor.execute(sql_update_e_query, (email_otp, email))
                connection.commit()
                return redirect(url_for("otp", email=email))
                # connection.commit()
            else:
                if role == "Admin":
                    return redirect(url_for("dashboard"))
                else:
                    return redirect(url_for("masterpageuser"))
            connection.commit()
            print("Logged in sucessfully")

        except (Exception, psycopg2.Error) as error:
            print("Error in select operation", error)

        finally:
            # closing database connection.
            if connection:
                cursor.close()
                connection.close()
                print("PostgreSQL connection is closed")
    return render_template("login_user.html")
示例#27
0
def createuser():
    if request.method == "POST":
        connection = psycopg2.connect(
            user="******",
            password="******",
            host="localhost",
            port="5432",
            database="postgres",
        )

        cursor = connection.cursor()
        try:
            # connection = psycopg2.connect(
            #     user="******",
            #     password="******",
            #     host="localhost",
            #     port="5432",
            #     database="postgres",
            # )

            # cursor = connection.cursor()

            username = request.form["username"]
            email = request.form["email"]
            phone = request.form["phone"]
            password = request.form["password"]
            #         # hashing the password
            #         # pbkdf2_sha256.using(rounds=1000, salt_size=8).hash(password) to modify the salt & rounds
            hashed_pwd = pbkdf2_sha256.hash(password)
            gender = request.form["gender"]
            designation = request.form["role"]
            status = "Disable"
            sso = False
            motp = False
            eotp = False
            m_otp_received = "None"
            e_otp_received = "None"
            print(
                username,
                email,
                phone,
                hashed_pwd,
                gender,
                designation,
                status,
                sso,
                motp,
                eotp,
                m_otp_received,
                e_otp_received,
            )

            sql_insert_query = """INSERT INTO users (username, email, phone, password,
            gender, designation, status, sso, motp, eotp, m_otp_received, e_otp_received) 
            VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
            record_to_insert = (
                username,
                email,
                phone,
                hashed_pwd,
                gender,
                designation,
                status,
                sso,
                motp,
                eotp,
                m_otp_received,
                e_otp_received,
            )
            cursor.execute(sql_insert_query, record_to_insert)
            connection.commit()
            print("Record inserted sucessfully")
            return redirect(url_for("userlogin"))

        except (Exception, psycopg2.Error) as error:
            print("Error in select operation", error)

        finally:
            # closing database connection.
            if connection:
                cursor.close()
                connection.close()
                print("PostgreSQL connection is closed")
    return render_template("index.html")
示例#28
0
SCHEMA = {
    2: {
        'up': [
            [
                """
                CREATE TABLE users(
                 id BIGSERIAL PRIMARY KEY,
                 email VARCHAR (64) UNIQUE NOT NULL,
                 password TEXT NOT NULL                 
                );"""
            ],
            [
                "INSERT INTO users (email, password) values ($1, $2)",
                os.getenv('API_ADMIN_EMAIL'),
                pbkdf2_sha256.hash(os.getenv('API_ADMIN_PASSWORD'))
            ],
            ["CREATE INDEX idx_users_email ON users(email);"],
        ],
        'down': [
            ["DROP INDEX idx_users_email"],
            ["DROP TABLE users;"],
        ]
    },
    1: {
        'up': [["CREATE TABLE versions( id integer NOT NULL);"],
               ["INSERT INTO versions VALUES ($1);", 1]],
        'down': [
            ["DROP TABLE versions;"],
        ]
    }
示例#29
0
def hash_pass_code(code: []) -> str:
    return pbkdf2_sha256.hash(''.join(str(k) for k in code),
                              salt=b'',
                              rounds=5000)
示例#30
0
文件: tests.py 项目: Kusalb/Sales
from django.test import TestCase

# Create your tests here.
from passlib.handlers.pbkdf2 import pbkdf2_sha256

hased=  pbkdf2_sha256.hash("password")

print(hased)