본문 바로가기
heroku & salesforce

[Django] 파이썬 장고 salesforce 로그인 연동 _simple_salesforce

by 배추잠자리 2022. 5. 16.
반응형

[Django] 파이썬 장고 salesforce 로그인 연동 _simple_salesforce

# simple_salesforce  세일즈포스 로그인 라이브러리 예제

 

 

■ simple_salesforce 라이브러리 설치

pip install simple-salesforce

 

 

■ simple_salesforce import 

from simple_salesforce import Salesforce

 

 

■ 파이썬 소스코드

 

# 세일즈포스 로그인 확인 및 정보 가져오기

 

1. 웹에서 넘어온 id, pw를 Salesforce 메소드에 넘겨준다. 이때 세일즈포스의 Org ID도 함께 넘겨줍니다.

2. 그럼 sf에 담긴 정보를 query를 통해 원하는 데이터를 가져올 수 있습니다.

-> 세일즈포스 로그인이 실패하면 즉, 없는 정보로 로그인하면 Exception이 떨어집니다.

 

 

# 리턴받은 데이터 파싱하기

 

 

# 리턴받은 데이터를 기반으로 로그인 및 유저 테이블 INSERT

 

1. 파싱된 정보로 장고 user테이블에 넣어주고 로그인을 시켜줍니다.

2. Exception에 대해서도 처리해줍니다.

 

 

 

■ 최종 소스코드

        data = json.loads(request.body)

        _id = data['id']  # 웹에서 넘어온 로그인정보 ID
        _pw = data['pw']  # 웹에서 넘어온 로그인정보 PW
        try:
            # password, username, salesforce의 ORG ID를 넣어준다.
            sf = Salesforce(password=_pw, username=_id, organizationId='00D5j00123')

            # SQL로 where 조건에 ID를 걸어서 원하는 정보를 가져온다.
            query_result = sf.query(
                "select id, username, firstname, lastname, Title FROM user WHERE username ='" + _id + "'")

            for key, val in query_result.items():  # OrderedDict 형태
                if str(key) == "records":  # key : records 안에 리턴값 존재
                    for _key, _val in val[0].items():  # OrderedDict 형태
                        if _key == "Id":
                            sfdc_id = _val
                        if _key == "Username":
                            username = _val
                        if _key == "FirstName":
                            first_name = _val
                        if _key == "LastName":
                            last_name = _val
                        if _key == "Title":
                            title = _val

            # 로그인 유저 정보에 넣어준다.
            user = get_user_model()
            user_create = User.objects.create_user(
                username=username, password=_pw, email=_id, last_name=last_name, first_name=first_name
            )

            # 세일즈 포스 로그인이 확인되면 로그인 성공
            auth.login(request, user_create)
            return_data = {
                'status': '200',
                'proc': 'success',
            }
        except Exception as e:
            return_data = {
                'proc': 'fail',
            }
        return JsonResponse(return_data)

 

파이썬 장고 세일즈포스 로그인 연동가능한 라이브러리 예제입니다.

장고 simple-salesforce에 대해서 안되는 부분이 있으시면 댓글남겨주세요~

반응형

댓글