Пример #1
0
def validate(handler):
    request_path = sh.getEnv('REQUEST_URI').partition('?')[0]

    is_login = sh.session.get('is_login', False)
    is_admin = sh.session.get('is_admin', False)
    method   = sh.getEnv('REQUEST_METHOD')

    # 禁止未登录用户访问REQUIRE_LOGIN_URL中的地址
    if not is_login and request_path in REQUIRE_LOGIN_URL:
        return sh.redirectToLogin()

    # 禁止非admin用户访问admin页面
    if not is_admin and request_path.startswith('/admin') and request_path != '/admin/login':
        return sh.redirect('/admin/login')

    return handler()
Пример #2
0
    def POST(self):
        if not sh.session.is_login:
            return sh.redirectToLogin()
        user_model = sh.model('User')
        user = user_model.get(sh.session.id)

        inputs = sh.inputs()
        assert inputs.get('action', '')

        if inputs.action == 'upload':
            if inputs.get('image_file', ''):
                self.savePortrait(sh.session.id, inputs.image_file)
            return sh.redirect('/accounts/portrait')

        elif inputs.action == 'crop':

            if not user.image:
                return sh.alert('请先上传头像')

            assert int(float(inputs.get('region_width', '0'))) > 0
            assert int(float(inputs.get('region_height', '0'))) > 0
            real_width, real_height = sh.imageSize(user.image.url)  # 图片的真实宽高
            crop = inputs.crop
            region_width = int(float(inputs.region_width))  # 选择区域的宽度
            region_height = int(float(inputs.region_height))  # 选择区域的高度

            start_x = int(crop.split()[0])  # 选中的起始位置
            start_y = int(crop.split()[1])
            region_x = int(crop.split()[2])  # 选中的宽度
            region_y = int(crop.split()[3])  # 选中的高度

            # convert 裁剪区域
            region = '%dx%d+%d+%d' % (region_x * real_width / region_width,
                                      region_y * real_height / region_height,
                                      real_width * start_x / region_width,
                                      real_height * start_y / region_height)

            path = sh.urlToPath(user.image.url)
            os.system('convert %s -crop %s %s' %
                      (path, region, path + '.crop'))
            user_model.update(sh.session.id, {'crop': crop})

            # 删除以前裁剪图片的各种尺寸副本
            os.system('rm %s.crop_*' % path)

            return sh.redirect('/accounts')
Пример #3
0
    def POST(self):
        inputs = sh.inputs()
        assert (6 <= len(inputs.new_password) < 60)
        user_model = sh.model('User')
        user_ctrl = sh.ctrl('User')
        if not sh.session.is_login:
            return sh.redirectToLogin()

        Userid = sh.session.id
        user = user_model.get(Userid)
        assert (user is not None)

        if not user_ctrl.validate(user.email, inputs.old_password):
            return sh.page.user.ResetPassword('原密码输入错误, 请重新输入')

        user_model.update(Userid, dict(password=inputs.new_password))
        return sh.alert('重置密码成功', '/')
Пример #4
0
def validate(handler):
    request_path = sh.getEnv('REQUEST_URI').partition('?')[0]

    is_login = sh.session.get('is_login', False)
    is_admin = sh.session.get('is_admin', False)
    method = sh.getEnv('REQUEST_METHOD')

    # 禁止未登录用户访问REQUIRE_LOGIN_URL中的地址
    if not is_login and request_path in REQUIRE_LOGIN_URL:
        return sh.redirectToLogin()

    # 禁止非admin用户访问admin页面
    if not is_admin and request_path.startswith(
            '/admin') and request_path != '/admin/login':
        return sh.redirect('/admin/login')

    return handler()
Пример #5
0
    def POST(self):
        inputs = sh.inputs()
        assert(6 <= len(inputs.new_password) < 60)
        user_model = sh.model('User')
        user_ctrl  = sh.ctrl('User')
        if not sh.session.is_login:
            return sh.redirectToLogin()

        Userid = sh.session.id
        user = user_model.get(Userid)
        assert(user is not None)

        if not user_ctrl.validate(user.email, inputs.old_password):
            return sh.page.user.ResetPassword('原密码输入错误, 请重新输入')

        user_model.update(Userid, dict(password=inputs.new_password))
        return sh.alert('重置密码成功', '/')
Пример #6
0
    def POST(self):
        if not sh.session.is_login:
            return sh.redirectToLogin()
        user_model = sh.model('User')
        user = user_model.get(sh.session.id)

        inputs = sh.inputs()
        assert inputs.get('action', '')

        if inputs.action == 'upload':
            if inputs.get('image_file', ''):
                self.savePortrait(sh.session.id, inputs.image_file)
            return sh.redirect('/accounts/portrait')

        elif inputs.action == 'crop':

            if not user.image:
                return sh.alert('请先上传头像')

            assert int(float(inputs.get('region_width', '0'))) > 0
            assert int(float(inputs.get('region_height', '0'))) > 0
            real_width, real_height = sh.imageSize(user.image.url) # 图片的真实宽高
            crop = inputs.crop
            region_width = int(float(inputs.region_width)) # 选择区域的宽度
            region_height = int(float(inputs.region_height)) # 选择区域的高度

            start_x  = int(crop.split()[0]) # 选中的起始位置
            start_y  = int(crop.split()[1])
            region_x  = int(crop.split()[2])# 选中的宽度
            region_y = int(crop.split()[3]) # 选中的高度
            
            # convert 裁剪区域
            region = '%dx%d+%d+%d' % (region_x * real_width / region_width, 
                                    region_y * real_height / region_height,
                                    real_width * start_x / region_width, 
                                    real_height * start_y / region_height)

            path = sh.urlToPath(user.image.url)
            os.system('convert %s -crop %s %s' % (path, region, path+'.crop'))
            user_model.update(sh.session.id, {'crop': crop})

            # 删除以前裁剪图片的各种尺寸副本
            os.system('rm %s.crop_*' % path)

            return sh.redirect('/accounts')
Пример #7
0
    def GET(self):
        if not sh.session.is_login:
            return sh.redirectToLogin(sh.getEnv('REQUEST_URI'))

        user = sh.model('User').get(sh.session.id)
        return sh.page.user.Portrait(user)
Пример #8
0
    def GET(self):
        if not sh.session.is_login:
            return sh.redirectToLogin(sh.getEnv('REQUEST_URI'))

        user = sh.model('User').get(sh.session.id)
        return sh.page.user.Portrait(user)
Пример #9
0
 def GET(self):
     inputs = sh.inputs()
     if sh.session.is_login:
         return sh.page.user.ResetPassword()
     else:
         return sh.redirectToLogin()
Пример #10
0
 def GET(self):
     inputs = sh.inputs()
     if sh.session.is_login:
         return sh.page.user.ResetPassword()
     else:
         return sh.redirectToLogin()