예제 #1
0
    def _deco():
        try:
            token = request.headers.get(
                'token', default='').decode('utf-8').encode('utf-8')
        except Exception as msg:
            retdict = request_result(601, ret={'msg': msg.message})
            return retdict
        if token == '':
            retdict = request_result(706)
            return retdict

        ret = get_payload(token=token)
        if ret['status'] != 0:
            return ret

        try:

            payload = ret['result']['payload']
            tokenid = json.loads(payload)['tokenid']

        except Exception as msg:
            return request_result(202, ret=msg.message)

        checkret = system_check_token(tokenid, token)

        if 'status' in checkret and checkret['status'] == 0:
            return func(payload=payload)
        else:
            print 'token error'
            return request_result(202, ret=checkret)
예제 #2
0
def user_get_org_msg(kwargs):  # 普通用户获取组织信息
    try:
        orgs_user = g.db_session.query(OrgsUser).filter(
            OrgsUser.org_id == kwargs['orga_uuid_arg'],
            OrgsUser.uid == kwargs['uid'],
            OrgsUser.is_delete == '0').first()

        if orgs_user is None:
            return request_result(806)

        orga_msg = dict()
        orga_msg['role'] = orgs_user.role

        orgs_b = g.db_session.query(OrgsBase).filter(
            OrgsBase.org_id == kwargs['orga_uuid_arg'], OrgsBase.is_delete == '0').first()

        if orgs_b is None:
            return request_result(100, ret='no org msg , this is error')

        orga_msg['orga_name'] = orgs_b.org_name
        orga_msg['orga_detail'] = orgs_b.org_detail
        orga_msg['is_public'] = orgs_b.is_public
        orga_msg['creation_time'] = orgs_b.creation_time
        orga_msg['delete_time'] = orgs_b.delete_time

        return request_result(0, ret=orga_msg)
    except Exception as msg:
        return request_result(403, ret=msg.message)
예제 #3
0
    def _deco(kwargs=dict()):
        try:
            token = request.headers.get(
                'token', default='').decode('utf-8').encode('utf-8')
        except Exception as msg:
            return request_result(601, ret={'msg': msg.message})
        if token == '':
            return request_result(706)

        try:
            ret = get_payload(token=token)
            if ret['status'] != 0:
                return ret

            payload = ret['result']['payload']
            tokenid = json.loads(payload)['tokenid']

            checkret = system_check_token(tokenid, token)

            if 'status' in checkret and checkret['status'] == 0:
                kwargs['payload'] = payload
                return func(kwargs=kwargs)
            else:
                return request_result(202, ret=payload)
        except Exception as msg:
            return request_result(202, ret=msg.message)
예제 #4
0
def publicImage(kwargs):  # 平台公开镜像
    try:
        offset = (kwargs['page'] - 1) * kwargs['page_size']
        limit = kwargs['page_size']

        if offset < 0 or limit <= 0:
            return request_result(706, "page or page_size is error")

        from sqlalchemy import func
        count = g.db_session.query(ImageRepository).filter(
            ImageRepository.deleted == '0',
            ImageRepository.is_public == '1').count()

        print "dfdfsfd"
        print count
        print "count"

        image_repo = g.db_session.query(ImageRepository).filter(
            ImageRepository.deleted == '0',
            ImageRepository.is_public == '1').offset(offset).limit(limit)
    except Exception as msg:
        print msg.message
        return request_result(404, ret=msg.message)

    return retImageRepo(page=kwargs['page'],
                        page_size=kwargs['page_size'],
                        count=count,
                        repolist=image_repo)
예제 #5
0
def GetOauthInfo(uid, src_type):
    """ 由用户名 和 代码源 获取 oauth 认证信息 """
    ret = g.db_session.query(GitHubOauth).filter(
        GitHubOauth.uid == uid, GitHubOauth.src_type == src_type).first()

    if ret is None:
        return False, request_result(103)

    access_token = ret.access_token
    if access_token is None or '' == access_token:
        return False, request_result(104)

    git_name = ret.git_name
    git_uid = ret.git_uid

    # 还没有获取用户信息,需要获取用户信息并更新到数据表
    # if git_name is None or ret.git_emain is None or git_uid is None:
    if git_name is None or git_uid is None:  # 对于不显示email的用户设置,无法得到用户邮箱

        from authServer.oauth.github import update_git_hub_oauth

        ret_user = update_git_hub_oauth(uid=uid,
                                        token=access_token,
                                        src_type=src_type)
        if ret_user['status'] != 0:
            return False, ret_user

        git_name = ret_user['result']['git_name']
        git_uid = ret_user['result']['git_uid']

    return True, (access_token, git_name, uid, git_uid)
예제 #6
0
    def modify_org(kwargs):
        try:
            data = request.data
            data_json = json.loads(data)
            org_detail = data_json.get('orga_detail', '')  #.decode('utf-8').encode('utf-8')
            is_public = data_json.get('is_public', '').decode('utf-8').encode('utf-8')
            if org_detail == '' or is_public not in Mask_Public:
                return request_result(706)
        except Exception as msg:
            return request_result(710, ret=msg.message)

        try:
            print 'ssssss'
            print kwargs['orga_uuid']
            print kwargs['uid']
            orgs_user = g.db_session.query(OrgsUser).filter(
                OrgsUser.org_id == kwargs['orga_uuid'], OrgsUser.role == OrgaRole.OrgaMaster.value, OrgsUser.uid == kwargs['uid']).first()

            if orgs_user is None:
                return request_result(806)

            g.db_session.query(OrgsBase).filter(OrgsBase.org_id == kwargs['orga_uuid']).update(
                {"org_detail": org_detail, "is_public": is_public})
            g.db_session.commit()
            return request_result(0)
        except Exception as msg:
            return request_result(403, ret=msg.message)
예제 #7
0
 def _deco(kwargs=dict()):
     try:
         if kwargs['orga_uuid_arg'] != kwargs['orga_uuid']:
             return request_result(806)
     except Exception as msg:
         return request_result(100, ret=msg.message)
     return func(kwargs)
예제 #8
0
    def _deco(kwargs):
        try:

            data = request.data
            data_json = json.loads(data)
            username = data_json.get('user_name',
                                     '').decode('utf-8').encode('utf-8')
            password = data_json.get('pass_word',
                                     '').decode('utf-8').encode('utf-8')
            email = data_json.get('email', '').decode('utf-8').encode('utf-8')
            code_id = data_json.get('code_id',
                                    '').decode('utf-8').encode('utf-8')
            code_str = data_json.get('code_str',
                                     '').decode('utf-8').encode('utf-8')
            if username == '' or password == '' or email == '':
                return request_result(706)
            kwargs['username'] = username
            kwargs['password'] = password
            kwargs['email'] = email
            kwargs['code_id'] = code_id
            kwargs['code_str'] = code_str
        except Exception as msg:
            return request_result(710, ret=msg.message)

        return func(kwargs)
예제 #9
0
    def get_user_orgas(kwargs):

        print kwargs['uid']

        try:
            orgs_all = g.db_session.query(OrgsUser).filter(
                OrgsUser.uid == kwargs['uid'], OrgsUser.is_delete == '0').all()

            if orgs_all is None:
                return request_result(809)

            orga_list = list()
            for organode in orgs_all:
                orgs_d = dict()
                orgs_d['org_id'] = organode.org_id
                orgs_d['role'] = organode.role
                orgs_d['creation_time'] = organode.creation_time
                orgs_d['update_time'] = organode.update_time


                orgs_base = g.db_session.query(OrgsBase).filter(
                    OrgsBase.org_id == organode.org_id).first()

                if orgs_base is not None:
                    orgs_d['orga_name'] = orgs_base.org_name
                    orgs_d['orga_detail'] = orgs_base.org_detail
                    orgs_d['is_public'] = orgs_base.is_public

                orga_list.append(orgs_d)


            return request_result(0, ret=orga_list)
        except Exception as msg:
            return request_result(403)
예제 #10
0
def verify_token(key, token):
    """
    token验证
    :param token: base64 str
    :return: dict type
    """
    retdict = dict()
    retdict['status_code'] = 0
    try:
        decoded_token = decode_token_bytes(str(token))
    except Exception as msg:
        return request_result(602, ret={"msg": str(msg)})

    payload = decoded_token[:-16]
    sig = decoded_token[-16:]

    # 生成签名
    expected_sig = _get_signature(key=key, value=payload)
    if sig != expected_sig:  # 伪造的签名
        return request_result(203)

    data = json.loads(payload.decode('utf8'))
    if data.get('expires') >= time.time():
        return request_result(0, ret={"msg": data})
    else:
        # 签名过期
        x = time.localtime(data.get('expires'))
        time_str = time.strftime('%Y-%m-%d %H:%M:%S', x)
        return request_result(204, ret={"Expired_Time": time_str})
예제 #11
0
def GenerateConfirmUrl(email, secret_key, timeout=None):
    """
    根据邮箱和url前缀生成邮箱确认连接
    :param host_prefix:
    :param email:
    :param secret_key:
    :param timeout:
    :return:
    """

    dk = dict()

    print 'emis'
    print email

    dk['email'] = email

    if timeout is not None and isinstance(timeout, (int, float)) is False:
        return request_result(707, 'timeout not is int or float')

    retToken = GenerateConfirmToken(dk, secret_key=secret_key)

    if 'status' in retToken and 0 == retToken['status']:
        confirmUrl = retToken['result']['token']
        return request_result(0, ret=confirmUrl)

    return request_result(100, ret='is eoor')
예제 #12
0
    def get_orga_owner(kwargs):

        # 不是管理员 或  要操作的组织和token不符
        if kwargs['role_uuid'] != '1' or kwargs['orga_uuid_arg'] != kwargs[
                'orga_uuid']:
            return request_result(806)

        try:
            orgs_u = g.db_session.query(OrgsUser).filter(
                OrgsUser.org_id == kwargs['orga_uuid'],
                OrgsUser.uid == kwargs['uid']).first()

            if orgs_u is None:
                return request_result(806)

            user = g.db_session.query(UserBase).filter(
                UserBase.user_id == kwargs['uid']).first()

            if user is None:
                return request_result(808)

            user_msg = dict()
            user_msg['username'] = user.username
            user_msg['email'] = user.email
            user_msg['logo'] = user.logo
            user_msg['orga_role'] = orgs_u.role

            return request_result(0, ret=user_msg)
        except Exception as msg:
            return request_result(403)
예제 #13
0
    def modify_orga_owner(kwargs):
        # 不是拥有者 或  要操作的组织和token不符
        if kwargs['role_uuid'] != str(
                OrgaRole.OrgaMaster.value
        ) or kwargs['orga_uuid_arg'] != kwargs['orga_uuid']:
            return request_result(806)

        try:

            # 新拥有者,并赋予管理员权限
            g.db_session.query(OrgsUser).filter(
                OrgsUser.org_id == kwargs['orga_uuid'],
                OrgsUser.uid == kwargs['user_uuid_arg']).update(
                    {"role": OrgaRole.OrgaMaster.value})

            # 解除拥有者权限
            g.db_session.query(OrgsUser).filter(
                OrgsUser.org_id == kwargs['orga_uuid'],
                OrgsUser.uid == kwargs['uid']).update(
                    {"role": OrgaRole.OrgaAdmin.value})

            g.db_session.commit()

            from authServer.common.usercenter.token import get_login_token
            return get_login_token(kwargs['user_name'])  # 返回用户token
            # return request_result(0)
        except Exception as msg:
            return request_result(403)
    def change_password(self, new_pwd):
        """
        修改密码, 修改密码时同时把 密码干扰种子 更新一次
        :type new_pwd: 新密码
        """

        # self.get_user_base()
        # if self.login_username(old_p) is False:
        #     return request_result(705)

        self.salt = self.get_salt()
        self.save_password = self.get_save_password(new_pwd, self.salt)

        try:
            g.db_session.query(UserBase).filter(
                UserBase.username == self.user_name).update({
                    "password": self.save_password,
                    'salt': self.salt
                })
            g.db_session.commit()
            ret = request_result(0)
        except Exception as msg:
            ret = request_result(403, ret=msg.message)
        finally:
            return ret
예제 #15
0
def get_orga_user_list(orga_uuid):
    """ 得到一个组织的用户列表 """
    try:
        orga_users = g.db_session.query(OrgsUser).filter(
            OrgsUser.org_id == orga_uuid, OrgsUser.is_delete == '0').all()

        if orga_users is None:
            return request_result(808)

        orga_user_list = list()
        for orga_user_n in orga_users:
            orga_user = dict()
            orga_user['uid'] = orga_user_n.uid
            orga_user['role'] = orga_user_n.role
            orga_user['creation_time'] = orga_user_n.creation_time
            orga_user['update_time'] = orga_user_n.update_time

            user_base = g.db_session.query(UserBase).filter(
                UserBase.user_id == orga_user_n.uid).first()
            if user_base is not None:
                orga_user['user_name'] = user_base.username
                orga_user['email'] = user_base.email
                # orga_user['logo'] = user_base.logo
                from authServer.conf.conf import OssHost
                if user_base.logo is None or user_base.logo == '':
                    orga_user[
                        'logo'] = OssHost + os.sep + 'repository/default.png'
                else:
                    orga_user['logo'] = OssHost + os.sep + user_base.logo
            orga_user_list.append(orga_user)
        return request_result(0, ret=orga_user_list)
    except Exception as msg:
        return request_result(403, ret=msg.message)
예제 #16
0
def myselfImage(kwargs):  # 平台公开镜像
    try:
        offset = (kwargs['page'] - 1) * kwargs['page_size']
        limit = kwargs['page_size']

        if offset < 0 or limit <= 0:
            return request_result(706, "page or page_size is error")

        from sqlalchemy import func
        count = g.db_session.query(ImageRepository).filter(
            ImageRepository.deleted == '0',
            ImageRepository.uid == kwargs['orga_uuid']).count()

        image_repo = g.db_session.query(ImageRepository).filter(
            ImageRepository.deleted == '0',
            ImageRepository.uid == kwargs['orga_uuid']).offset(offset).limit(
                limit)  # 组织id区分镜像
        # ImageRepository.uid == kwargs['uid']).offset(offset).limit(limit)
    except Exception as msg:
        print msg.message
        return request_result(404, ret=msg.message)

    return retImageRepo(page=kwargs['page'],
                        page_size=kwargs['page_size'],
                        count=count,
                        repolist=image_repo)
예제 #17
0
    def put(self):
        """
        @apiGroup User
        @apiDescription  用户账号切换到组织账号下的token切换
        @apiVersion 1.0.0
        @apiHeader {String} token    请求API的token
        @api {put} /api/v1.0/usercenter/tokens  身份切换
        @apiExample {post} Example usage:
        post http://auth.boxlinker.com/api/v1.0/usercenter/tokens  Example:
            {
                "orga_uuid": "8425b6eb-eb77-382f-9acb-385d85eab70c"
            }

        @apiParam {String} orga_uuid  组织id
        """
        try:
            data = request.data
            data_json = json.loads(data)
            orga_uuid = data_json.get('orga_uuid',
                                      '').decode('utf-8').encode('utf-8')
            if orga_uuid == '':
                return request_result(706)
        except Exception as msg:
            return request_result(710, ret=msg.message)

        k = dict()
        k['orga_uuid_arg'] = orga_uuid

        return jsonify(self.change_token(k))
예제 #18
0
def DelOauth(kwargs):
    """
    1. github_oauth 得到 access_token 等信息
    2. code_repo 得到 repo
    3. image_repository_build    repo_id
    :param kwargs:
    :return:
    """

    if kwargs['user_uuid_arg'] != kwargs['uid']:
        return request_result(806)


    # 获取该用户,对应平台下的所有代码项目
    codeRepos = g.db_session.query(CodeRepo).filter(
        CodeRepo.uid == kwargs['user_uuid_arg'], CodeRepo.src_type == kwargs['src_type_arg']).all()

    # 删除关联代码自动构建项目的配置信息  ImageRepositoryBuild
    for code_repo in codeRepos:
        print code_repo.repo_id
        image_build = ImageRepositoryBuild(code_repo_id=code_repo.repo_id)
        g.db_session.query(ImageRepositoryBuild).filter(ImageRepositoryBuild.code_repo_id == code_repo.repo_id).delete()
        g.db_session.commit()

    # 删除所有代码记录
    g.db_session.query(CodeRepo).filter(CodeRepo.uid == kwargs['user_uuid_arg'], CodeRepo.src_type == kwargs['src_type_arg']).delete()
    g.db_session.commit()


    # 标记所有与该平台相关的镜像全部是  非自动构建项目
    g.db_session.query(ImageRepository).filter(
        ImageRepository.uid == kwargs['user_uuid_arg'], ImageRepository.src_type == kwargs['src_type_arg']
    ).update({'src_type': '', 'is_code': '0'})
    g.db_session.commit()


    # 删除webhook记录; 遍历
    oauth = g.db_session.query(GitHubOauth).filter(GitHubOauth.uid == kwargs['user_uuid_arg'],
                                                   GitHubOauth.src_type == kwargs['src_type_arg']).first()

    # 该步骤;需要单独开启一个进程处理; 时间比较长
    if oauth is not None:
        if 'github' == kwargs['src_type_arg']:

            from authServer.common.oauthclient.HubApi import DelGithubAllWebHooks

            DelGithubAllWebHooks(username=oauth.git_name, token=oauth.access_token, del_hooks_url=OAUTH_WEBHOOKS)
            print 'githu'
        elif 'coding' == kwargs['src_type_arg']:
            from authServer.common.oauthclient.CodingApi import DellAllWebHooks

            DellAllWebHooks(user_name=oauth.git_name, access_token=oauth.access_token, hook_url_del=OAUTH_WEBHOOKS)

    # 删除授权记录
    g.db_session.query(GitHubOauth).filter(GitHubOauth.uid == kwargs['user_uuid_arg'],
                                           GitHubOauth.src_type == kwargs['src_type_arg']).delete()
    g.db_session.commit()

    return request_result(0)
예제 #19
0
    def _deco(kwargs):
        if username_exist(kwargs['username']):
            return request_result(702)

        if email_exist(kwargs['email']):
            return request_result(704)

        return func(kwargs)
    def siggup_init(self, user_name, email, password):  # 注册初始化
        self.user_name = user_name
        self.email = email
        self.salt = self.get_salt()
        self.save_password = self.get_save_password(password, self.salt)

        print "------000---"
        print self.user_name
        print self.salt
        print self.save_password

        self.uuid = uuid.uuid3(uuid.NAMESPACE_DNS, self.user_name).__str__()
        now_time = get_now_time()

        try:
            user_base = UserBase(user_id=self.uuid,
                                 username=self.user_name,
                                 email=self.email,
                                 password=self.save_password,
                                 creation_time=now_time,
                                 update_time=now_time,
                                 salt=self.salt)
            g.db_session.add(user_base)
            g.db_session.commit()
        except Exception as msg:
            return request_result(401, ret=msg.message)

        from authServer.v1.usercenter.passwordFind import SendFindEmail
        from authServer.conf.conf import callback_url

        if CONFIRM_EMAIL:
            print 'callback_url'
            print callback_url

            sendret = SendFindEmail(self.user_name,
                                    action='ConfirmEmail',
                                    callback_url=callback_url,
                                    email_template='email_confirm.html')

            print 'sendret'
            print sendret

        try:
            ret = make_orgs(uid=self.uuid,
                            user_name=self.user_name,
                            org_name=self.user_name)

            if 'status' in ret and ret['status'] == 0:
                return ret
        except Exception as msg:

            print 'error'
            print msg.message
            user_b = UserBase(user_id=self.uuid)
            g.db_session.delete(user_b)
            g.db_session.commit()

            return request_result(401, ret=msg.message)
예제 #21
0
    def get(self, opcode, action):
        """
        @apiGroup UserSignup
        @apiDescription     用户注册, 邮件确认
        @apiVersion 1.0.0
        @api {get} /api/v1.0/usercenter/users/email/<string:opcode>/<string:action>  邮件确认

        @apiParam {String} opcode  操作码
        @apiParam {String} action  动作
        """

        ac_opt = g.db_session.query(ActionCode).filter(
            ActionCode.opcode == opcode, ActionCode.action == action).first()

        if ac_opt is None:
            return jsonify(
                request_result(
                    806,
                    ret='The confirmation code is invalid or is already in use'
                ))

        try:
            g.db_session.query(UserBase).filter(
                UserBase.user_id == ac_opt.user_id).update({"is_active": '1'})
            g.db_session.query(ActionCode).filter(
                ActionCode.opcode == opcode,
                ActionCode.action == action).delete()

            g.db_session.commit()
            ret = request_result(0)
        except Exception as msg:
            ret = request_result(403, ret=msg.message)
        finally:

            # 处理初始化余额

            # from authServer.common.usercenter.token import get_login_token
            #
            # from authServer.conf.conf import INITBILLING
            #
            # retdict = get_login_token(username=ac_opt.user_id, isuuid=True)
            #
            # print "EmailConfirm - get_login_token"
            # print "EmailConfirm : " + retdict
            #
            # try:
            #     headers = {
            #         'token': retdict['result']['token']
            #     }
            #     bolret = requests.post(url=INITBILLING, headers=headers, timeout=5)
            # except Exception as msg:
            #     print "EmailConfirm :" + msg.message
            #     return request_result(100, ret=bolret)
            #
            # print "EmailConfirm : " + bolret

            return redirect('/login')
예제 #22
0
def github_repo_list(kwargs):
    uid = kwargs['uid']
    ret = g.db_session.query(GitHubOauth).filter(GitHubOauth.uid == kwargs['uid']).first()

    if ret is None:
        ret = request_result(103)
        return ret

    access_token = ret.access_token
    if access_token is None or '' == access_token:
        ret = request_result(104)
        return ret

    git_name = ret.git_name
    git_uid = ret.git_uid

    # 还没有获取用户信息,需要获取用户信息并更新到数据表
    # if git_name is None or ret.git_emain is None or git_uid is None:
    if git_name is None or git_uid is None:  # 对于不显示email的用户设置,无法得到用户邮箱

        src_type = "github"  # 暂时这样
        ret_user = update_git_hub_oauth(uid=uid, token=access_token, src_type=src_type)

        if ret_user['status'] != 0:
            return ret_user

        git_name = ret_user['result']['git_name']
        git_uid = ret_user['result']['git_uid']

    from authServer.common.oauthclient.repolist import refresh_repo_list

    # 是否强制刷新
    try:
        refresh_c = request.args.get('refresh', '').decode('utf-8').encode('utf-8').lower()
    except Exception as msg:
        return request_result(706, ret=msg.message)

    if refresh_c == 'true':   # 执行强制刷新操作
        refresh_repo_list(access_token, git_name, uid, git_uid)

    # 用户的 uid, 获取 github_repo 数据   github 项目列表
    ret_github_repo = g.db_session.query(CodeRepo).filter(CodeRepo.uid == str(uid)).all()

    if ret_github_repo is None or len(ret_github_repo) <= 0:
        # 如果数据不存在,强制刷新(从github请求)
        refresh_repo_list(access_token, git_name, uid, git_uid)
        ret_github_repo = g.db_session.query(CodeRepo).filter(CodeRepo.uid == str(uid)).all()

    repo_list = list()
    for node in ret_github_repo:
        repo_list.append(
            {'repo_name': node.repo_name, 'git_uid': node.repo_uid, 'is_hook': node.is_hook,
             'id': node.id, 'html_url': node.html_url, 'ssh_url': node.ssh_url,
             'url': node.url, 'description': node.description})

    return request_result(0, ret=repo_list)
예제 #23
0
    def create_org_user(kwargs):

        # 不是管理员 或  要操作的组织和token不符
        print kwargs['role_uuid']
        print type(kwargs['role_uuid'])
        print OrgaRole.OrgaMaster.value
        print OrgaRole.OrgaDevelop.value

        if kwargs['role_uuid'] != str(
                OrgaRole.OrgaMaster.value) and kwargs['role_uuid'] != str(
                    OrgaRole.OrgaDevelop.value):
            return request_result(806)

        try:
            now_time = get_now_time()

            # 已经是组织成员
            orgs_u = g.db_session.query(OrgsUser).filter(
                OrgsUser.org_id == kwargs['orga_uuid'],
                OrgsUser.uid == kwargs['user_uuid_arg']).first()

            # print "----create_org_user----"

            if orgs_u is not None:
                # print "----create_org_user---- orgs_u is not None"
                # print orgs_u.is_delete
                # print type(orgs_u.is_delete)
                if str(orgs_u.is_delete) == '0':  # 已经是组织成员
                    return request_result(807, ret=kwargs['user_name'])
                elif str(orgs_u.is_delete) == '1':  # 删除的用户,冲洗标记
                    g.db_session.query(OrgsUser).filter(
                        OrgsUser.org_id == kwargs['orga_uuid'],
                        OrgsUser.uid == kwargs['user_uuid_arg']).update({
                            "is_delete":
                            '0',
                            "update_time":
                            now_time,
                            "role":
                            OrgaRole.OrgaDevelop.value
                        })

                    g.db_session.commit()
                    return request_result(0)

            org_user = OrgsUser(org_id=kwargs['orga_uuid'],
                                uid=kwargs['user_uuid_arg'],
                                role=OrgaRole.OrgaDevelop.value,
                                creation_time=now_time,
                                update_time=now_time)
            g.db_session.add(org_user)
            g.db_session.commit()
            return request_result(0)
        except Exception as msg:
            return request_result(401, ret=msg.message)
예제 #24
0
def GithubWebHookInfo():
    request_headers = dict(request.headers)
    for kk in request_headers:
        print "kk: " + str(kk)
        print "kk: " + str(kk) + "     value: " + str(request_headers[kk])

    x_hub_signature = request_headers['X-Hub-Signature']
    sha_name, signature = x_hub_signature.split('=')
    if sha_name != 'sha1':
        print 'error sha_name type'
        return {'msg': 'error sha_name type'}

    x_github_delivery = request_headers['X-Github-Delivery']
    x_github_event = request_headers['X-Github-Event']

    if x_github_event == 'ping':
        return {'msg': 'pong'}

    if x_github_event != 'push':
        return {'msg': 'no do somethings'}

    try:
        payload = json.loads(request.data)
        print '-----plyload----'
        print type(payload)
        repo_id = payload['repository']['id']  # github中的项目id
        repo_name = payload['repository']['name']
        ssh_url = payload['repository']['ssh_url']
        print payload
    except Exception as msg:
        print msg.message
        return request_result(100, ret=msg.message)

    try:
        code_repo = g.db_session.query(CodeRepo).filter(
            CodeRepo.repo_id == str(repo_id),
            CodeRepo.src_type == 'github').first()
        if code_repo is None:
            return request_result(405)
        secret = code_repo.repo_hook_token
    except Exception as msg:
        print 'Webhooks   g.db_session.query(GitHubRepo) is error'
        print msg.message
        return request_result(404, ret=msg.message)

    mac = hmac.new(str(secret), msg=request.data, digestmod=sha1).hexdigest()
    if mac != signature:
        print 'mac != signature'
        return {'msg': 'error signature'}
    print 'mac == signature'

    from authServer.oauth.send_build_msg import github_Webhooks
    ret = github_Webhooks(repo_id)
    return ret
예제 #25
0
    def _deco(payload):
        try:
            payload_d = json.loads(payload)
        except Exception as msg:
            return request_result(206, ret=msg.message)  # payload 中没有需要的信息

        if 'user_name' in payload_d and 'uid' in payload_d:
            return func(user_name=payload_d['user_name'].decode(
                'utf-8').encode('utf-8'),
                        uid=payload_d['uid'].decode('utf-8').encode('utf-8'))
        return request_result(206)  # payload 中没有需要的信息
예제 #26
0
    def put(self, orga_uuid, user_uuid):
        """
        @apiGroup OrganizationUserHandle
        @apiDescription       修改组织成员属性,只有组织拥有者可以修改其他成员的属性
        @apiVersion 1.0.0
        @apiHeader {String} token 请求接口的token,放在请求头中
        @api {put} /api/v1.0/usercenter/orgs/<string:orga_uuid>/users/<string:user_uuid>  修改组织成员属性

        @apiParamExample {json} Request-Param-Example:
            {
                "role_uuid": "1"
            }

            1: 管理员
            2: 开发者

            SystemGod = 100  # 系统管理员
            OrgaMaster = 200  # 群主;组织拥有者
            OrgaAdmin = 210   # 群管理员
            OrgaDevelop = 400  # 群开发者


        @apiSuccessExample {json} 修改组织用户属性:
            {
                "status": 0,
                "msg": "OK",
                "result": "some msg"
            }

        @apiParam {String} orga_uuid   组织id
        @apiParam {String} user_uuid   用户id
        @apiParam {String} role_uuid 修改用户权限, 添加成员时该参数可以为空
        """
        try:
            data = request.data
            data_json = json.loads(data)
            role_uuid_arg = data_json.get('role_uuid',
                                          '').decode('utf-8').encode('utf-8')
            print role_uuid_arg
            if role_uuid_arg == '' or role_uuid_arg not in [
                    str(OrgaRole.OrgaAdmin.value),
                    str(OrgaRole.OrgaMaster.value),
                    str(OrgaRole.OrgaDevelop.value)
            ]:
                return jsonify(request_result(706))
            kwargs = dict()
            kwargs['role_uuid_arg'] = role_uuid_arg
            kwargs['user_uuid_arg'] = user_uuid
            kwargs['orga_uuid_arg'] = orga_uuid
        except Exception as msg:
            return jsonify(request_result(710, ret=msg.message))

        return jsonify(self.modify_org_user(kwargs=kwargs))
    def change_logo(self, new_logo):

        try:
            g.db_session.query(UserBase).filter(
                UserBase.username == self.user_name).update({"logo": new_logo})
            g.db_session.commit()
            self.logo = new_logo
            ret = request_result(0)
        except Exception as msg:
            ret = request_result(403, ret=msg.message)
        finally:
            return ret
    def github_rightaway_build(kwargs):
        try:
            image_repo = g.db_session.query(ImageRepository).filter(
                ImageRepository.uuid == kwargs['repository_uuid_arg'],
                ImageRepository.uid == kwargs['uid']).first()

            if image_repo is None:
                return request_result(
                    809, "uid->.repository_uuid_arg != repository_uuid_arg")
        except Exception as msg:
            return request_result(404, ret=msg.message)

        from authServer.oauth.send_build_msg import send_build_rabbit_by_repouuid
        return send_build_rabbit_by_repouuid(kwargs['repository_uuid_arg'])
예제 #29
0
    def _deco(payload):
        try:
            print 'sdsdsdsds'
            var_box = request.headers.get(
                'varbox', default='').decode('utf-8').encode('utf-8')
        except Exception as msg:
            retdict = request_result(601, ret={'msg': msg.message})
            return retdict
        print 'var_box :' + str(var_box)
        if var_box == '':
            retdict = request_result(706, ret='no var_box')
            return retdict

        return func(payload, var_box)
예제 #30
0
def AutoSetLogo(repositoryname):
    try:
        print 'logo AutoSetLogo :' + repositoryname
        dd = setRepoLogo(repositoryname)

        if dd is False:
            return request_result(403)

        g.db_session.query(ImageRepository).filter(
            ImageRepository.repository == repositoryname).update({'logo': dd})
        g.db_session.commit()
        return request_result(0)
    except Exception as msg:
        return request_result(403)