예제 #1
0
    def process_session(self, environ):
        request = environ["leanengine.request"]
        context.local.current = context.Current()
        context.local.current.meta = {
            "remote_address": get_remote_address(request),
        }

        if environ["_app_params"]["session_token"] not in (None, ""):
            session_token = environ["_app_params"]["session_token"]
            if self.fetch_user:
                user = leancloud.User.become(session_token)
                context.local.current.user = user
                context.local.user = user
            context.local.current.session_token = session_token
            return

        try:
            data = json.loads(request.get_data(as_text=True))
        except ValueError:
            context.local.user = None
            return

        if "user" in data and data["user"]:
            user = leancloud.User()
            user._update_data(data["user"])
            context.local.current.user = user
            context.local.current.session_token = user.get_session_token()
            context.local.user = user
            return

        context.local.user = None
예제 #2
0
def login():
    if request.method == 'POST':
        u = leancloud.User()
        username = request.form.get('email')
        password = request.form.get('pass')
        try:
            u.login(username,password)
        except LeanCloudError as e:
            message = ['text-danger',]
            if e.code == 210:
                message.append("用户名/密码 错误")
            elif e.code == 211:
                message.append("不存在的用户")
            else:
                message.append(e.error)
            return render_template('login.html',message=message)
        if u.get('isAuth'):
            r = redirect('/admin')
        else:
            r = redirect('/rockaroll')
        response = make_response(r)
        response.set_cookie('token',value=u._session_token,expires=datetime.now()+timedelta(hours=6))
        return response
    else:
        return redirect('/')
예제 #3
0
def department():
    token = request.cookies.get('token')
    if not token:
        return redirect('/')
    u = leancloud.User()
    try:
        u.become(token)
    except LeanCloudError as e:
        if e.code == 211:
            return redirect('/')
    u.login()
    if not u.get('isAuth'):
        return redirect('/')
    if request.method == 'GET':
        result = leancloud.Query.do_cloud_query("select * from SignUp where sex='男' or sex='女' limit 10000").results
        count = len(result)
        return render_template('dep3.html',result=result,count=count)
    else:
        dp = request.form.get('department')
        T = leancloud.Object.extend('SignUp')
        q = T.query
        q.equal_to('department',dp)
        result = q.find()
        count = len(result)
        return render_template('dep3.post.html',result=result,count=count)
예제 #4
0
 def test_fix_search(self):
     user = leancloud.User().become(
         "eyJhbGciOiJIUzI1NiIsImlhdCI6MTUyOTkxNTQyMywiZXhwIjoxNTMzNTE1NDIzfQ.IjQi.ttcDTMSAszLP7F3TJieiCCzYV6j0o0D8pMFgnMkGCwI"
     )
     ret = cloudfunc.run('search', keyword="测", belongGroupId="8")
     print(ret)
     assert (type(ret) == dict)
예제 #5
0
    def process_session(self, environ):
        request = environ['leanengine.request']
        context.local.current = context.Current()
        context.local.current.meta = {
            'remote_address': get_remote_address(request),
        }

        if environ['_app_params']['session_token'] not in (None, ''):
            session_token = environ['_app_params']['session_token']
            if self.fetch_user:
                user = leancloud.User.become(session_token)
                context.local.current.user = user
                context.local.user = user
            context.local.current.session_token = session_token
            return

        try:
            data = json.loads(request.get_data(as_text=True))
        except ValueError:
            context.local.user = None
            return

        if 'user' in data and data['user']:
            user = leancloud.User()
            user._update_data(data['user'])
            context.local.current.user = user
            context.local.current.session_token = user.get_session_token()
            context.local.user = user
            return

        context.local.user = None
예제 #6
0
 def userLogin(cls, userName, password):
     user = leancloud.User()
     try:
         user.login(userName, password)
         return user.session_token
     except LeanCloudError as err:
         return err.error
예제 #7
0
 def test_create_marks(self):
     leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Marks')
     obj = Model()
     obj.set("isPublic", 1)
     obj.set("goodsId", 2)
     obj.save()
예제 #8
0
def search():
    string = request.args.get('s')
    token = request.cookies.get('token')
    if not token:
        return redirect('/')
    u = leancloud.User()
    try:
        u.become(token)
    except LeanCloudError as e:
        if e.code == 211:
            return redirect('/')
    u.login()
    if not u.get('isAuth'):
        return redirect('/')
    if string:
        T = leancloud.Object.extend('SignUp')
        q1 = T.query;q2 = T.query
        q1.equal_to('sex','男');q2.equal_to('sex','女')
        s1 = leancloud.Query.or_(q1,q2)
        s2 = T.query;s3 = T.query;s4 = T.query
        result = leancloud.Query.or_(
            leancloud.Query.and_(s2.contains('name',string),s1),
            leancloud.Query.and_(s3.contains('mobilePhoneNumber',string),s1),
            leancloud.Query.and_(s4.contains('email',string),s1)
        )
        result = result.find()
        map(lambda x:x.fetch(),result)
        count = len(result)
    else:
        q = leancloud.Query.do_cloud_query(
            "select * from SignUp where sex='男' or sex='女'"
        )
        result = q.results
        count = len(result)
    return render_template('dep2.html',result=result,count=count)
예제 #9
0
def create_user():
  user = leancloud.User()
  user.set_username('tobe')
  user.set_mobile_phone_number(TOBE_PHONE)
  user.set_email(TOBE_EMAIL)
  user.set_password(TOBE_PASS)
  user.sign_up()
예제 #10
0
def test_current_user():  # type: () -> None
    saved_user = leancloud.User()
    saved_user.set("username", "user{0}".format(int(time.time())))
    saved_user.set("password", "password")
    saved_user.set_email("{0}@leancloud.rocks".format(int(time.time())))
    saved_user.sign_up()
    session_token = saved_user.get_session_token()

    @engine.define
    def current_user():
        user = engine.current.user
        TestCurrentUser = leancloud.Object.extend("TestCurrentUser")
        o = TestCurrentUser()
        o.set("user", user)
        o.set({"yetAnotherUser": user})
        o.save()

        TestCurrentUser.query.equal_to("user", user).find()
        assert user.get("username") == saved_user.get("username")

        # test current
        assert engine.current.session_token == session_token
        assert user.get("username") is engine.current.user.get("username")
        assert "remote_address" in engine.current.meta

    response = requests.get(
        url + "/__engine/1/functions/current_user",
        headers={
            "x-avoscloud-application-id": TEST_APP_ID,
            "x-avoscloud-application-key": TEST_APP_KEY,
            "x-avoscloud-session-token": session_token,
            "x-lc-hook-key": TEST_HOOK_KEY,
        },
    )
    assert response.status_code == 200

    @engine.before_save("Xxx")
    def before_xxx_save(xxx):
        assert engine.current.user.get("username") == saved_user.get(
            "username")

    response = requests.post(
        url + "/__engine/1/functions/Xxx/beforeSave",
        headers={
            "x-avoscloud-application-id": TEST_APP_ID,
            "x-avoscloud-application-key": TEST_APP_KEY,
            "x-lc-hook-key": TEST_HOOK_KEY,
        },
        json={
            "object": {},
            "user": {
                "username": saved_user.get("username")
            }
        },
    )
    assert_equal(response.status_code, 200)

    # cleanup
    saved_user.destroy()
예제 #11
0
 def test_create_notes(self):
     leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Notes')
     obj = Model()
     obj.set("note", "这个东西不错,哈哈哈")
     obj.set("isPublic", 1)
     obj.set("goodsId", 1)
     obj.save()
예제 #12
0
 def test_modify_user(self):
     user = leancloud.User().become(session_token)
     print(user.dump())
     ret = cloudfunc.run('modifyUserInfo', password="******", firstName="晓华", lastName="郑",
                         email="[email protected]", defaultGroupId=2,
                         avatar="https://www.gravatar.com/avatar/0efa74fe76da7681da2939b3214e5cdf?s=328&d=identicon&r=PG", )
     print(ret)
     assert (type(ret) == dict)
예제 #13
0
def dispatch_on_login(params):
    func = _cloud_codes.get('__on_login__User')
    if not func:
        return

    user = leancloud.User()
    user._finish_fetch(params['object'], True)

    return func(user)
예제 #14
0
 def test_query_position(self):
     user = leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Position')
     query = Model.query
     query.skip(0)
     query.limit(2)
     todo_list = query.find()
     for todo in todo_list:
         print(todo.dump())
예제 #15
0
 def test_query_space(self):
     user = leancloud.User().become(session_token)
     Space = leancloud.Object.extend('Space')
     query = Space.query
     query.skip(0)
     query.limit(2)
     todo_list = query.find()
     for todo in todo_list:
         print(todo.dump())
예제 #16
0
 def test_create_space(self):
     leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Space')
     obj = Model()
     obj.set("name", "客厅")
     obj.set("isPublic", 1)
     obj.set("avatar", "http://www.baidu.com")
     obj.set("groupId", 2)
     obj.save()
예제 #17
0
def main(year, month, appid, appkey, username, password):
    leancloud.init(appid, appkey)
    user = leancloud.User()
    user.login(username, password)
    logger.info('User login OK')

    export_month_data(year, month)
    user.logout()
    logger.info('User logged out')
예제 #18
0
 def createNewUser(cls, userName, email, password):
     user = leancloud.User()
     user.set_username(userName)
     user.set_password(password)
     user.set_email(email)
     try:
         user.sign_up()
         return "注册成功"
     except LeanCloudError as err:
         return err.error
예제 #19
0
 def test_query_goods(self):
     user = leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Goods')
     query = Model.query
     query.skip(0)
     query.limit(2)
     query.equal_to("type", 2)
     todo_list = query.find()
     for todo in todo_list:
         print(todo.dump())
예제 #20
0
 def test_create_position(self):
     leancloud.User().become(session_token)
     Model = leancloud.Object.extend('Position')
     obj = Model()
     obj.set("name", "入口处")
     obj.set("isPublic", 1)
     obj.set("avatar", "http://www.baidu.com")
     obj.set("coordinate", "coordinatecoordinatecoordinate")
     obj.set("spaceId", 1)
     obj.save()
예제 #21
0
def webtest(num):
    token = request.cookies.get('token')
    if not token:
        return redirect('/')
    u = leancloud.User()
    try:
        u.become(token)
    except LeanCloudError as e:
        if e.code == 211:
            return redirect('/')
    u.login()
    w = checkUserWeb(u)
    schedule = w.get('passNum')
    if request.method == 'GET':
        num = int(num)
        if num == schedule+1 or schedule == 4:
            if num == 1:
                return render_template('web/web1.html',answer=u.id[-6:-2])
            elif num == 2:
                return render_template('web/web2.html',answer=u.id[-4:])
            elif num == 3:
                subtitle = request.args.get('subtitle')
                if subtitle == '2':
                    return render_template('web/web4.html')
                else:
                    return render_template('web/web3.html')
            elif num == 4:
                return render_template('web/web5.html')
        else:
            return redirect('web/%d'%(schedule+1))
    else:
        if num == '1' or num == '2':
            answer = request.form.get('answer')
            if num == '1':
                if u.id[-6:-2] == answer:
                    if schedule != 4:
                        w.set('passNum',1)
                        w.save()
                    return redirect('/web/2')
            if num == '2':
                if u.id[-4:] == answer:
                    if schedule != 4:
                        w.set('passNum',2)
                        w.save()
                    return redirect('/web/3')
        elif num == '3':
                if schedule != 4:
                    w.set('passNum',3)
                    w.save()
                return """nice jobs,now you can go next.""",200
        else:
            try:
                return render_template('web/web%s.html'%num,error=1)
            except:
                abort(404)
예제 #22
0
def test_current_user():  # type: () -> None
    saved_user = leancloud.User()
    saved_user.set('username', 'user{0}'.format(int(time.time())))
    saved_user.set('password', 'password')
    saved_user.set_email('{0}@leancloud.rocks'.format(int(time.time())))
    saved_user.sign_up()
    session_token = saved_user.get_session_token()

    @engine.define
    def current_user():
        user = engine.current.user
        TestCurrentUser = leancloud.Object.extend('TestCurrentUser')
        o = TestCurrentUser()
        o.set('user', user)
        o.set({'yetAnotherUser': user})
        o.save()

        TestCurrentUser.query.equal_to('user', user).find()
        assert user.get('username') == saved_user.get('username')

        # test current
        assert engine.current.session_token == session_token
        assert user.get('username') is engine.current.user.get('username')
        assert 'remote_address' in engine.current.meta

    response = requests.get(url + '/__engine/1/functions/current_user',
                            headers={
                                'x-avoscloud-application-id': TEST_APP_ID,
                                'x-avoscloud-application-key': TEST_APP_KEY,
                                'x-avoscloud-session-token': session_token,
                                'x-lc-hook-key': TEST_HOOK_KEY,
                            })
    assert response.status_code == 200

    @engine.before_save('Xxx')
    def before_xxx_save(xxx):
        assert engine.current.user.get('username') == saved_user.get(
            'username')

    response = requests.post(url + '/__engine/1/functions/Xxx/beforeSave',
                             headers={
                                 'x-avoscloud-application-id': TEST_APP_ID,
                                 'x-avoscloud-application-key': TEST_APP_KEY,
                                 'x-lc-hook-key': TEST_HOOK_KEY,
                             },
                             json={
                                 'object': {},
                                 'user': {
                                     'username': saved_user.get('username')
                                 }
                             })
    assert_equal(response.status_code, 200)

    # cleanup
    saved_user.destroy()
예제 #23
0
def test_save():  # type: () -> None
    user = leancloud.User()
    user.login('user1_name', 'password')

    f = File('Blah.txt', open('tests/sample_text.txt', 'rb'))
    f.save()

    assert f.owner_id == user.id
    assert f.id
    assert f.name == 'Blah.txt'
    assert f.mime_type == 'text/plain'
    assert not f.url.endswith('.')
예제 #24
0
    def test_create_goods(self):
        leancloud.User().become(session_token)
        Model = leancloud.Object.extend('Goods')
        obj = Model()
        obj.set("name", "鞋柜2")
        obj.set("isPublic", 1)
        obj.set("avatar", "http://www.baidu.com")
        obj.set("coordinate", "")
        obj.set("positionId", 2)
        obj.set("type", 1)
        obj.save()

        print(obj.dump())
예제 #25
0
파일: auth.py 프로젝트: qorzj/lessdoc
def admin_login(username: str, password: str):
    now_time = int(time.time())
    if now_time < Security.cooldown_time:
        raise BadParamError(
            message=f'用户名密码错误过多,{Security.cooldown_time - now_time}秒后重试')
    user = leancloud.User()
    try:
        Security.try_count = 0
        user.login(username, password)
    except leancloud.LeanCloudError as e:
        Security.incre()
        raise BadParamError(message=str(e.error), param='')
    return {'token': user.get_session_token()}
예제 #26
0
def personProfile():
    obid = request.args.get('id')
    token = request.cookies.get('token')
    if not token:
        return redirect('/')
    u = leancloud.User()
    try:
        u.become(token)
    except LeanCloudError as e:
        if e.code == 211:
            return redirect('/')
    u.login()
    if not u.get('isAuth'):
        return redirect('/')
    T = leancloud.Object.extend('SignUp')
    q = T.query
    user = q.get(obid)
    t = user.get('user')
    t.fetch()
    q1 = leancloud.Query('tyLog')
    fuli = True
    if not q1.equal_to("email",user.get("email")).find():
        fuli = False
    if not user:
        return redirect('/')
    status = (u.get('dapartment') in user.get('department') or u.get('dapartment') == 'ALL') # dapartment 写错了懒得再改服务器字段了
    if request.method == 'GET':
        fileList = user.get("files")
        if fileList:
            for file in fileList:
                file.fetch()
        else:
            fileList = []
        return render_template('dep4.html',user=user,info=t,status=status,id=obid,fuli=fuli,fileList=fileList)
    elif request.method == 'POST':
        choice = request.form.get('choice')
        department = request.form.get('department')
        user.fetch()
        if choice == 'recommand':
            if not (status and department != "NULL"):
                print u.get("name")
                abort(500)
            user.set("department",department)
        elif choice == 'accept':
            user.set("pass_first",True)
        elif choice == 'reject':
            user.set("pass_first",False)
        else:
            abort(500)
        user.save()
        return "ok"
예제 #27
0
def dispatch_on_login(_cloud_codes, app_params, params):
    from .authorization import HOOK_KEY
    current_hook_key = app_params.get('hook_key')
    if not current_hook_key or current_hook_key != HOOK_KEY:
        raise LeanEngineError(code=401, message='Unauthorized.')

    func = _cloud_codes.get('__on_login__User')
    if not func:
        return

    user = leancloud.User()
    user._update_data(params['object'])

    return func(user)
예제 #28
0
def dispatch_on_verified(_cloud_codes, app_params, verify_type, params):
    func_name = '__on_verified_' + verify_type
    from .authorization import HOOK_KEY
    hook_key = app_params.get('hook_key')
    if not hook_key or hook_key != HOOK_KEY:
        raise LeanEngineError(code=401, message='Unauthorized.')

    user = leancloud.User()
    user._update_data(params['object'])

    func = _cloud_codes.get(func_name)
    if not func:
        return
    return func(user)
예제 #29
0
def sign_up(username, password):
    user = leancloud.User()
    user.set_username(username)
    user.set_password(password)
    try:
        user.sign_up()
        return {"resultCode": "0", "message": "注册成功"}
    except leancloud.errors.LeanCloudError as e:
        print "LError: 注册问题", e, e.code
        if e.code == 202:
            message = "用户名已经被占用"
        else:
            message = e.error
        return {"resultCode": "1", "message": message}
예제 #30
0
파일: main.py 프로젝트: hjsjhn/pychat
def main(): # {{{1
    'Main function'
    user = leancloud.User()
    welcome()
    if first(user) == 'fail':
        print('failed')
        return 1
    while True:
        printinfo()
        con = input('Input yours(press :q to quit): ')
        if con in ('f**k', ':q'):
            break
        else:
            updateinfo(user, con)