1313 **/
1414
1515use App \Http \Controllers \GetAllTrait ;
16+ use App \Http \Controllers \Traits \RequestProcessor ;
17+ use App \Http \Controllers \UserGroupsValidationRulesFactory ;
1618use App \Http \Controllers \UserValidationRulesFactory ;
19+ use App \Http \Exceptions \HTTP403ForbiddenException ;
1720use App \Http \Utils \HTMLCleaner ;
1821use App \ModelSerializers \SerializerRegistry ;
1922use Auth \Repositories \IUserRepository ;
23+ use Illuminate \Http \JsonResponse ;
2024use Illuminate \Http \Request as LaravelRequest ;
25+ use Illuminate \Support \Facades \App ;
2126use Illuminate \Support \Facades \Auth ;
2227use Illuminate \Support \Facades \Request ;
2328use Illuminate \Support \Facades \Log ;
2732use models \exceptions \ValidationException ;
2833use OAuth2 \Builders \IdTokenBuilder ;
2934use OAuth2 \IResourceServerContext ;
35+ use OAuth2 \Models \IClient ;
3036use OAuth2 \Repositories \IClientRepository ;
3137use OAuth2 \ResourceServer \IUserService ;
3238use Utils \Http \HttpContentType ;
@@ -41,6 +47,8 @@ final class OAuth2UserApiController extends OAuth2ProtectedController
4147{
4248 use GetAllTrait;
4349
50+ use RequestProcessor;
51+
4452 protected function getAllSerializerType (): string
4553 {
4654 return SerializerRegistry::SerializerType_Private;
@@ -324,4 +332,28 @@ public function get($id)
324332 }
325333 }
326334
335+ /**
336+ * @param $user_id
337+ * @return JsonResponse|mixed
338+ */
339+ public function addUserToGroup ($ user_id ): mixed
340+ {
341+ return $ this ->processRequest (function () use ($ user_id ) {
342+ if (!Request::isJson ()) return $ this ->error400 ();
343+
344+ $ payload = Request::json ()->all ();
345+ // Creates a Validator instance and validates the data.
346+ $ validation = Validator::make ($ payload , UserGroupsValidationRulesFactory::build ($ payload ));
347+ if ($ validation ->fails ()) {
348+ $ ex = new ValidationException ();
349+ throw $ ex ->setMessages ($ validation ->messages ()->toArray ());
350+ }
351+ $ user_groups_payload = [
352+ "groups " => $ payload ["groups " ],
353+ ];
354+ $ this ->openid_user_service ->update (intval ($ user_id ), $ user_groups_payload );
355+ return $ this ->updated ();
356+ });
357+ }
358+
327359}
0 commit comments