mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
lcl_login_manager to global
This commit is contained in:
parent
0c916d48f1
commit
956a15b5fa
139
src/utils/zcl_abapgit_login_manager.clas.abap
Normal file
139
src/utils/zcl_abapgit_login_manager.clas.abap
Normal file
|
@ -0,0 +1,139 @@
|
|||
CLASS zcl_abapgit_login_manager DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS:
|
||||
load
|
||||
IMPORTING
|
||||
!iv_uri TYPE string
|
||||
!ii_client TYPE REF TO if_http_client OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_authorization) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
save
|
||||
IMPORTING
|
||||
!iv_uri TYPE string
|
||||
!ii_client TYPE REF TO if_http_client
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
clear,
|
||||
|
||||
set
|
||||
IMPORTING
|
||||
!iv_uri TYPE string
|
||||
!iv_username TYPE string
|
||||
!iv_password TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_auth) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_auth,
|
||||
uri TYPE string,
|
||||
authorization TYPE string,
|
||||
END OF ty_auth .
|
||||
|
||||
CLASS-DATA:
|
||||
gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY.
|
||||
|
||||
CLASS-METHODS:
|
||||
append
|
||||
IMPORTING
|
||||
!iv_uri TYPE string
|
||||
!iv_auth TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_login_manager IMPLEMENTATION.
|
||||
|
||||
METHOD append.
|
||||
|
||||
FIELD-SYMBOLS: <ls_auth> LIKE LINE OF gt_auth.
|
||||
|
||||
READ TABLE gt_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri )
|
||||
TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
|
||||
<ls_auth>-uri = zcl_abapgit_url=>host( iv_uri ).
|
||||
<ls_auth>-authorization = iv_auth.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD clear.
|
||||
|
||||
CLEAR gt_auth.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD load.
|
||||
|
||||
DATA: ls_auth LIKE LINE OF gt_auth.
|
||||
|
||||
READ TABLE gt_auth INTO ls_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri ).
|
||||
IF sy-subrc = 0.
|
||||
rv_authorization = ls_auth-authorization.
|
||||
|
||||
IF NOT ii_client IS INITIAL.
|
||||
ii_client->request->set_header_field(
|
||||
name = 'authorization'
|
||||
value = ls_auth-authorization ). "#EC NOTEXT
|
||||
ii_client->propertytype_logon_popup = ii_client->co_disabled.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: lv_auth TYPE string.
|
||||
|
||||
lv_auth = ii_client->request->get_header_field( 'authorization' ). "#EC NOTEXT
|
||||
|
||||
IF NOT lv_auth IS INITIAL.
|
||||
append( iv_uri = iv_uri
|
||||
iv_auth = lv_auth ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set.
|
||||
|
||||
DATA: lv_concat TYPE string.
|
||||
|
||||
ASSERT NOT iv_uri IS INITIAL.
|
||||
|
||||
IF iv_username IS INITIAL OR iv_password IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CONCATENATE iv_username ':' iv_password INTO lv_concat.
|
||||
|
||||
rv_auth = cl_http_utility=>if_http_utility~encode_base64( lv_concat ).
|
||||
|
||||
CONCATENATE 'Basic' rv_auth INTO rv_auth
|
||||
SEPARATED BY space ##NO_TEXT.
|
||||
|
||||
append( iv_uri = iv_uri
|
||||
iv_auth = rv_auth ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
27
src/utils/zcl_abapgit_login_manager.clas.xml
Normal file
27
src/utils/zcl_abapgit_login_manager.clas.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_LOGIN_MANAGER</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Login Manager</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
<DESCRIPTIONS>
|
||||
<SEOCOMPOTX>
|
||||
<CLSNAME>ZCL_ABAPGIT_LOGIN_MANAGER</CLSNAME>
|
||||
<CMPNAME>TY_AUTH</CMPNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>TY_AUTH</DESCRIPT>
|
||||
</SEOCOMPOTX>
|
||||
</DESCRIPTIONS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -221,7 +221,7 @@ CLASS lcl_background IMPLEMENTATION.
|
|||
lv_repo_name = lo_repo->get_name( ).
|
||||
WRITE: / <ls_list>-method, lv_repo_name.
|
||||
|
||||
lcl_login_manager=>set(
|
||||
zcl_abapgit_login_manager=>set(
|
||||
iv_uri = lo_repo->get_url( )
|
||||
iv_username = <ls_list>-username
|
||||
iv_password = <ls_list>-password ).
|
||||
|
|
|
@ -480,7 +480,7 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
" Disable internal auth dialog (due to its unclarity)
|
||||
li_client->propertytype_logon_popup = if_http_client=>co_disabled.
|
||||
|
||||
lcl_login_manager=>load( iv_uri = iv_url
|
||||
zcl_abapgit_login_manager=>load( iv_uri = iv_url
|
||||
ii_client = li_client ).
|
||||
|
||||
ro_client->send_receive( ).
|
||||
|
@ -493,7 +493,7 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
ro_client->check_http_200( ).
|
||||
|
||||
IF lv_scheme <> gc_scheme-digest.
|
||||
lcl_login_manager=>save( iv_uri = iv_url
|
||||
zcl_abapgit_login_manager=>save( iv_uri = iv_url
|
||||
ii_client = li_client ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -1149,18 +1149,18 @@ ENDCLASS.
|
|||
CLASS ltcl_login_manager IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
lcl_login_manager=>clear( ).
|
||||
zcl_abapgit_login_manager=>clear( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD teardown.
|
||||
lcl_login_manager=>clear( ).
|
||||
zcl_abapgit_login_manager=>clear( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD encoding.
|
||||
|
||||
DATA: lv_auth TYPE string.
|
||||
|
||||
lv_auth = lcl_login_manager=>set(
|
||||
lv_auth = zcl_abapgit_login_manager=>set(
|
||||
iv_uri = 'https://github.com/larshp/abapGit.git'
|
||||
iv_username = c_username
|
||||
iv_password = c_password ).
|
||||
|
@ -1180,13 +1180,13 @@ CLASS ltcl_login_manager IMPLEMENTATION.
|
|||
lv_auth2 TYPE string.
|
||||
|
||||
|
||||
lcl_login_manager=>set(
|
||||
zcl_abapgit_login_manager=>set(
|
||||
iv_uri = lc_github1
|
||||
iv_username = c_username
|
||||
iv_password = c_password ).
|
||||
|
||||
lv_auth1 = lcl_login_manager=>load( lc_github1 ).
|
||||
lv_auth2 = lcl_login_manager=>load( lc_github2 ).
|
||||
lv_auth1 = zcl_abapgit_login_manager=>load( lc_github1 ).
|
||||
lv_auth2 = zcl_abapgit_login_manager=>load( lc_github2 ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_auth1
|
||||
|
|
|
@ -2,122 +2,6 @@
|
|||
*& Include ZABAPGIT_UTIL
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_login_manager DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS:
|
||||
load
|
||||
IMPORTING iv_uri TYPE string
|
||||
ii_client TYPE REF TO if_http_client OPTIONAL
|
||||
RETURNING VALUE(rv_authorization) TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
save
|
||||
IMPORTING iv_uri TYPE string
|
||||
ii_client TYPE REF TO if_http_client
|
||||
RAISING zcx_abapgit_exception,
|
||||
clear,
|
||||
set
|
||||
IMPORTING iv_uri TYPE string
|
||||
iv_username TYPE string
|
||||
iv_password TYPE string
|
||||
RETURNING VALUE(rv_auth) TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_auth,
|
||||
uri TYPE string,
|
||||
authorization TYPE string,
|
||||
END OF ty_auth.
|
||||
|
||||
CLASS-DATA: gt_auth TYPE TABLE OF ty_auth WITH DEFAULT KEY.
|
||||
|
||||
CLASS-METHODS:
|
||||
append
|
||||
IMPORTING iv_uri TYPE string
|
||||
iv_auth TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_login_manager IMPLEMENTATION.
|
||||
|
||||
METHOD clear.
|
||||
CLEAR gt_auth.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set.
|
||||
|
||||
DATA: lv_concat TYPE string.
|
||||
|
||||
|
||||
ASSERT NOT iv_uri IS INITIAL.
|
||||
|
||||
IF iv_username IS INITIAL OR iv_password IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CONCATENATE iv_username ':' iv_password INTO lv_concat.
|
||||
|
||||
rv_auth = cl_http_utility=>if_http_utility~encode_base64( lv_concat ).
|
||||
|
||||
CONCATENATE 'Basic' rv_auth INTO rv_auth
|
||||
SEPARATED BY space ##NO_TEXT.
|
||||
|
||||
append( iv_uri = iv_uri
|
||||
iv_auth = rv_auth ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD load.
|
||||
|
||||
DATA: ls_auth LIKE LINE OF gt_auth.
|
||||
|
||||
|
||||
READ TABLE gt_auth INTO ls_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri ).
|
||||
IF sy-subrc = 0.
|
||||
rv_authorization = ls_auth-authorization.
|
||||
|
||||
IF NOT ii_client IS INITIAL.
|
||||
ii_client->request->set_header_field(
|
||||
name = 'authorization'
|
||||
value = ls_auth-authorization ). "#EC NOTEXT
|
||||
ii_client->propertytype_logon_popup = ii_client->co_disabled.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: lv_auth TYPE string.
|
||||
|
||||
|
||||
lv_auth = ii_client->request->get_header_field( 'authorization' ). "#EC NOTEXT
|
||||
|
||||
IF NOT lv_auth IS INITIAL.
|
||||
append( iv_uri = iv_uri
|
||||
iv_auth = lv_auth ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD append.
|
||||
|
||||
FIELD-SYMBOLS: <ls_auth> LIKE LINE OF gt_auth.
|
||||
|
||||
|
||||
READ TABLE gt_auth WITH KEY uri = zcl_abapgit_url=>host( iv_uri )
|
||||
TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
APPEND INITIAL LINE TO gt_auth ASSIGNING <ls_auth>.
|
||||
<ls_auth>-uri = zcl_abapgit_url=>host( iv_uri ).
|
||||
<ls_auth>-authorization = iv_auth.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_progress DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
|
Loading…
Reference in New Issue
Block a user