77namespace Chamilo \CoreBundle \Command ;
88
99use Chamilo \CoreBundle \Entity \AzureSyncState ;
10- use Chamilo \CoreBundle \Entity \User ;
1110use Chamilo \CoreBundle \Helpers \AuthenticationConfigHelper ;
1211use Chamilo \CoreBundle \Helpers \AzureAuthenticatorHelper ;
1312use Chamilo \CoreBundle \Repository \AzureSyncStateRepository ;
@@ -43,9 +42,12 @@ public function __construct(
4342 ) {
4443 parent ::__construct ();
4544
45+ $ this ->providerParams = $ configHelper ->getProviderConfig ('azure ' );
46+
4647 $ this ->client = $ this ->clientRegistry ->getClient ('azure ' );
48+
4749 $ this ->provider = $ this ->client ->getOAuth2Provider ();
48- $ this ->providerParams = $ configHelper -> getProviderConfig ( ' azure ' ) ;
50+ $ this ->provider -> tenant = $ this -> providerParams [ ' tenant ' ] ?? null ;
4951 }
5052
5153 /**
@@ -67,29 +69,17 @@ protected function generateOrRefreshToken(?AccessTokenInterface &$token): void
6769 */
6870 protected function getAzureUsers (): Generator
6971 {
70- $ userFields = [
71- 'givenName ' ,
72- 'surname ' ,
73- 'mail ' ,
74- 'userPrincipalName ' ,
75- 'businessPhones ' ,
76- 'mobilePhone ' ,
77- 'accountEnabled ' ,
78- 'mailNickname ' ,
79- 'id ' ,
80- ];
81-
8272 if ($ this ->providerParams ['script_users_delta ' ]) {
8373 $ usersDeltaLink = $ this ->syncStateRepo ->findOneBy (['title ' => AzureSyncState::USERS_DATALINK ]);
8474
8575 $ query = $ usersDeltaLink
8676 ? $ usersDeltaLink ->getValue ()
87- : \sprintf ('$select=%s ' , implode (', ' , $ userFields ));
77+ : \sprintf ('$select=%s ' , implode (', ' , AzureAuthenticatorHelper:: QUERY_FIELDS ));
8878 } else {
8979 $ query = \sprintf (
9080 '$top=%d&$select=%s ' ,
9181 AzureSyncState::API_PAGE_SIZE ,
92- implode (', ' , $ userFields )
82+ implode (', ' , AzureAuthenticatorHelper:: QUERY_FIELDS )
9383 );
9484 }
9585
@@ -99,16 +89,15 @@ protected function getAzureUsers(): Generator
9989 try {
10090 $ this ->generateOrRefreshToken ($ token );
10191
102- $ azureUsersRequest = $ this ->provider ->request (
103- 'get ' ,
104- $ this ->providerParams ['script_users_delta ' ] ? "users/delta? $ query " : "users? $ query " ,
92+ $ azureUsersRequest = $ this ->provider ->get (
93+ $ this ->providerParams ['script_users_delta ' ] ? "/v1.0/users/delta? $ query " : "/v1.0/users? $ query " ,
10594 $ token
10695 );
10796 } catch (GuzzleException |Exception $ e ) {
10897 throw new Exception ('Exception when requesting users from Azure: ' .$ e ->getMessage ());
10998 }
11099
111- $ azureUsersInfo = $ azureUsersRequest[ ' value ' ] ?? [];
100+ $ azureUsersInfo = $ azureUsersRequest ?? [];
112101
113102 foreach ($ azureUsersInfo as $ azureUserInfo ) {
114103 $ azureUserInfo ['mail ' ] = $ azureUserInfo ['mail ' ] ?? null ;
@@ -134,50 +123,6 @@ protected function getAzureUsers(): Generator
134123 } while ($ hasNextLink );
135124 }
136125
137- /**
138- * @return array<string, string|false>
139- */
140- public function getGroupUidByRole (): array
141- {
142- $ groupUidList = [
143- 'admin ' => $ this ->providerParams ['group_id_admin ' ],
144- 'sessionAdmin ' => $ this ->providerParams ['group_id_session_admin ' ],
145- 'teacher ' => $ this ->providerParams ['group_id_teacher ' ],
146- ];
147-
148- return array_filter ($ groupUidList );
149- }
150-
151- /**
152- * @return array<string, callable>
153- */
154- public function getUpdateActionByRole (): array
155- {
156- return [
157- 'admin ' => function (User $ user ): void {
158- $ user
159- ->setStatus (COURSEMANAGER )
160- ->addUserAsAdmin ()
161- ->setRoleFromStatus (COURSEMANAGER )
162- ;
163- },
164- 'sessionAdmin ' => function (User $ user ): void {
165- $ user
166- ->setStatus (SESSIONADMIN )
167- ->removeUserAsAdmin ()
168- ->setRoleFromStatus (SESSIONADMIN )
169- ;
170- },
171- 'teacher ' => function (User $ user ): void {
172- $ user
173- ->setStatus (COURSEMANAGER )
174- ->removeUserAsAdmin ()
175- ->setRoleFromStatus (COURSEMANAGER )
176- ;
177- },
178- ];
179- }
180-
181126 /**
182127 * @throws Exception
183128 */
0 commit comments