diff --git a/Tsi1.Api/Tsi1.Api/SignalR/VideoHub.cs b/Tsi1.Api/Tsi1.Api/SignalR/VideoHub.cs
index 4744e3c5304f6f3e848bc92fbd163c60d84a93e7..8f220558273e8805f09eaf7d52a89e551b2cfcdb 100644
--- a/Tsi1.Api/Tsi1.Api/SignalR/VideoHub.cs
+++ b/Tsi1.Api/Tsi1.Api/SignalR/VideoHub.cs
@@ -26,25 +26,17 @@ namespace Tsi1.Api.SignalR
             await Clients.Caller.SendAsync(Context.ConnectionId);
         }
 
-        [Authorize(Roles = UserTypes.Professor)]
-        public async Task CreateRoom(int activityId)
+        public async Task Join(int activityId, string offer)
         {
-            var result = await _activityService.ActivityValidation(activityId);
+            var userId = int.Parse(Context.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
 
-            if (result.HasError)
+            var validation = await _activityService.ActivityValidation(activityId, userId);
+
+            if (validation.HasError)
             {
-                throw new HubException(result.Message);
+                throw new HubException(validation.Message);
             }
 
-            await Groups.AddToGroupAsync(Context.ConnectionId, activityId.ToString());
-
-            await Clients.Caller.SendAsync("CreateRoom", activityId);
-        }
-
-        public async Task Join(int activityId, string offer)
-        {
-            var userId = int.Parse(Context.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
-
             var result = await _activityService.AttendVirtualClass(activityId, userId);
 
             if (result.HasError)
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
index 2dafbb77d7824411fd2d8955460e97a484e72a08..43e11ae55cebab960701cd73efb5e620cd7c74a7 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
@@ -15,7 +15,7 @@ namespace Tsi1.BusinessLayer.Interfaces
         Task<ServiceResult<int>> Modify(int activityId, ActivityModifyDto activityDto, int userId);
         Task<ServiceResult<int>> Delete(int activityId, int userId);
 
-        Task<ServiceResult<int>> ActivityValidation(int activityId);
+        Task<ServiceResult<int>> ActivityValidation(int activityId, int userId);
         Task<ServiceResult<GradeDto>> AddOrModifyGrade(GradeDto gradeDto, int userId);
         Task<ServiceResult<int>> DeleteGrade(int myUserId, int activityId, int userId);
         Task<ServiceResult<List<GradeDto>>> GetMyGrades(int activityId, int userId);
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
index 706d49ff0cca68604f335dcf3d0ae25a519c5015..fca3edd8d1cf94a4530a2fcb09f5b0d0dbd80832 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
@@ -52,7 +52,7 @@ namespace Tsi1.BusinessLayer.Services
             return result;
         }
 
-        public async Task<ServiceResult<int>> ActivityValidation(int activityId)
+        public async Task<ServiceResult<int>> ActivityValidation(int activityId, int userId)
         {
             var result = new ServiceResult<int>();
 
@@ -62,6 +62,15 @@ namespace Tsi1.BusinessLayer.Services
             {
                 result.HasError = true;
                 result.AddMessage(string.Format(ErrorMessages.ActivityDoesNotExist, activityId));
+                return result;
+            }
+
+            var validation = await this.UserTypeValidation(activity.CourseId, userId);
+
+            if (validation.HasError)
+            {
+                result.HasError = true;
+                result.AddMessage(validation.Message);
             }
 
             return result;