diff --git a/src/app/components/creator/room-creator-page/room-creator-page.component.ts b/src/app/components/creator/room-creator-page/room-creator-page.component.ts
index 74be4bd21f1d41cee7cac00e187240f330ea62f7..041a2888ba2ae91f2fd7578c8ae718a78824bff3 100644
--- a/src/app/components/creator/room-creator-page/room-creator-page.component.ts
+++ b/src/app/components/creator/room-creator-page/room-creator-page.component.ts
@@ -24,7 +24,6 @@ import { TitleService } from '../../../services/util/title.service';
 import { DeleteCommentsComponent } from '../_dialogs/delete-comments/delete-comments.component';
 import { Export } from '../../../models/export';
 import { BonusTokenService } from '../../../services/http/bonus-token.service';
-import { TopicCloudFilterComponent } from '../../shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component';
 import { RoomDeleteComponent } from '../_dialogs/room-delete/room-delete.component';
 import { RoomDeleted } from '../../../models/events/room-deleted';
 import { ProfanitySettingsComponent } from '../_dialogs/profanity-settings/profanity-settings.component';
@@ -437,12 +436,6 @@ export class RoomCreatorPageComponent extends RoomPageComponent implements OnIni
     dialogRef.componentInstance.room = this.room;
   }
 
-  showTagCloud(): void{
-    const dialogRef = this.dialog.open(TopicCloudFilterComponent, {
-      width:'400px'
-    });
-  }
-
   showTagsDialog(): void{
     this.updRoom = JSON.parse(JSON.stringify(this.room));
     const dialogRef = this.dialog.open(TagsComponent, {
diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.html b/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
index 5425e1e0a7e0f4393e4a23dd94ec117426ced4ab..aaa4d15b12ec16a90d7235c0cce18e951cae21c7 100644
--- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
+++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
@@ -6,6 +6,6 @@
                      [onClose]="this.onNoClick.bind(this)"
                      [isSpinning]="isSendingToSpacy"
                      [tags]="tags"
-                     [isModerator]="user && user.role > 0">
+                     [isModerator]="userRole > 0">
   </app-write-comment>
 </ars-row>
diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
index 72c1bb989922404415c8e5d66158337929770773..a76e736e514d82b4e716378bb4aaa8d465d30c2e 100644
--- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
+++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
@@ -11,6 +11,7 @@ import { CreateCommentKeywords, KeywordsResultType } from '../../../../utils/cre
 import { WriteCommentComponent } from '../../write-comment/write-comment.component';
 import { DeepLService } from '../../../../services/http/deep-l.service';
 import { SpacyService } from '../../../../services/http/spacy.service';
+import { UserRole } from '../../../../models/user-roles.enum';
 
 @Component({
   selector: 'app-submit-comment',
@@ -21,6 +22,7 @@ export class CreateCommentComponent implements OnInit {
 
   @ViewChild(WriteCommentComponent) commentComponent: WriteCommentComponent;
   @Input() user: User;
+  @Input() userRole: UserRole;
   @Input() roomId: string;
   @Input() tags: string[];
   isSendingToSpacy = false;
@@ -40,7 +42,7 @@ export class CreateCommentComponent implements OnInit {
 
   ngOnInit() {
     this.translateService.use(localStorage.getItem('currentLang'));
-    this.isModerator = this.user && this.user.role > 0;
+    this.isModerator = this.userRole > 0;
   }
 
   onNoClick(): void {
@@ -60,7 +62,7 @@ export class CreateCommentComponent implements OnInit {
     comment.roomId = localStorage.getItem(`roomId`);
     comment.body = body;
     comment.creatorId = this.user.id;
-    comment.createdFromLecturer = this.user.role > 0;
+    comment.createdFromLecturer = this.userRole > 0;
     comment.tag = tag;
     comment.questionerName = name;
     this.isSendingToSpacy = true;
diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
index 2822ca2f975633815ee0233780624da3b19de92a..93ea07cc164009873d64d9c2f6aa5a2dcd842ec5 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
+++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
@@ -14,7 +14,6 @@ import {
   KeywordOrFulltext,
   TopicCloudAdminDataScoringObject, TopicCloudAdminDataScoringKey, keywordsScoringMinMax, ensureDefaultScorings
 } from './TopicCloudAdminData';
-import { User } from '../../../../models/user';
 import { Comment } from '../../../../models/comment';
 import { CommentService } from '../../../../services/http/comment.service';
 import { TSMap } from 'typescript-map';
@@ -114,7 +113,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
       this.profanitywordlist = list;
       this.refreshKeywords();
     });
-    this.isCreatorOrMod = this.data.user.role !== UserRole.PARTICIPANT;
+    this.isCreatorOrMod = this.data.userRole > UserRole.PARTICIPANT;
     this.translateService.use(localStorage.getItem('currentLang'));
     this.spacyLabels = spacyLabels;
     this.wantedLabels = undefined;
@@ -329,7 +328,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
       endDate: this.endDate.length ? this.endDate : null,
       scorings: this.scorings
     };
-    this.topicCloudAdminService.setAdminData(this.topicCloudAdminData, true, this.data.user.role);
+    this.topicCloudAdminService.setAdminData(this.topicCloudAdminData, true, this.data.userRole);
   }
 
   setDefaultAdminData() {
@@ -643,7 +642,7 @@ interface Keyword {
 }
 
 export interface Data {
-  user: User;
+  userRole: UserRole;
 }
 
 enum KeywordType {
diff --git a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.html b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.html
index b2f041120e4e339e6ee40a31c8b0fa894a906429..1235cb454ded82a26a652b875131f41c93e49377 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.html
+++ b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.html
@@ -60,7 +60,7 @@
       <span *ngIf="isMobile()">{{'content.tag-cloud-questions-brainstorming-short' | translate}}</span>
       <span *ngIf="!isMobile()">{{'content.tag-cloud-questions-brainstorming' | translate}}</span>
     </mat-radio-button>
-    <mat-form-field *ngIf="user && user.role > 0 && radioButton.checked"
+    <mat-form-field *ngIf="userRole > 0 && radioButton.checked"
                     appearance="fill">
       <mat-label>{{'content.brainstorming-question' | translate}}</mat-label>
       <input matInput
diff --git a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts
index 5c7d2c91abcaf2781d770f9773724a9f1f4da004..2bb415a75f5974d5105b58b763faee8b04cf7c27 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts
+++ b/src/app/components/shared/_dialogs/topic-cloud-filter/topic-cloud-filter.component.ts
@@ -13,7 +13,6 @@ import { CommentListData } from '../../comment-list/comment-list.component';
 import { TopicCloudAdminService } from '../../../../services/util/topic-cloud-admin.service';
 import { TopicCloudAdminData } from '../topic-cloud-administration/TopicCloudAdminData';
 import { TagCloudDataService } from '../../../../services/util/tag-cloud-data.service';
-import { User } from '../../../../models/user';
 import { WorkerDialogComponent } from '../worker-dialog/worker-dialog.component';
 import { Room } from '../../../../models/room';
 import { ThemeService } from '../../../../../theme/theme.service';
@@ -43,7 +42,7 @@ enum KeywordsSource {
 })
 export class TopicCloudFilterComponent implements OnInit, OnDestroy {
   @Input() target: string;
-  @Input() user: User;
+  @Input() userRole: UserRole;
 
   question = '';
   continueFilter = 'continueWithAll';
@@ -122,7 +121,7 @@ export class TopicCloudFilterComponent implements OnInit, OnDestroy {
       this.continueFilter = 'continueWithAll';
     }
     if (this.filteredComments.comments === 0 && this.allComments.comments === 0) {
-      if (this.user && this.user.role > UserRole.PARTICIPANT) {
+      if (this.userRole > UserRole.PARTICIPANT) {
         setTimeout(() => {
           this.continueFilter = 'continueWithAllFromNow';
         });
@@ -215,7 +214,7 @@ export class TopicCloudFilterComponent implements OnInit, OnDestroy {
     if (newCount + count < 1) {
       return false;
     }
-    if (this.user && this.user.role === UserRole.PARTICIPANT) {
+    if (this.userRole === UserRole.PARTICIPANT) {
       return newCount < 1;
     }
     if (count * 2 / 3 < newCount) {
diff --git a/src/app/components/shared/comment-answer/comment-answer.component.html b/src/app/components/shared/comment-answer/comment-answer.component.html
index 14edcc800a77c439679c936abe00a9dfb4e54856..22e57fd2c8679eb74229d3be7c54f9a1eeecaadb 100644
--- a/src/app/components/shared/comment-answer/comment-answer.component.html
+++ b/src/app/components/shared/comment-answer/comment-answer.component.html
@@ -4,13 +4,13 @@
   <div fxLayout="row"
        fxLayoutAlign="center">
     <app-comment [comment]="comment"
-                 [userRole]="user.role"></app-comment>
+                 [userRole]="userRole"></app-comment>
   </div>
   <div fxLayout="row"
        fxLayoutAlign="center">
     <mat-card class="answer border-answer"
               *ngIf="!isStudent || answer">
-      <app-write-comment [isModerator]="user && user.role > 0"
+      <app-write-comment [isModerator]="userRole > 0"
                          [isCommentAnswer]="true"
                          [placeholder]="'comment-page.your-answer'"
                          [onClose]="openDeleteAnswerDialog()"
diff --git a/src/app/components/shared/comment-answer/comment-answer.component.ts b/src/app/components/shared/comment-answer/comment-answer.component.ts
index 36de40d125d2a77396abe06a6a04712e7e452397..a88b717dc589e72788930986a7bbb04881b0b3df 100644
--- a/src/app/components/shared/comment-answer/comment-answer.component.ts
+++ b/src/app/components/shared/comment-answer/comment-answer.component.ts
@@ -5,13 +5,10 @@ import { LanguageService } from '../../../services/util/language.service';
 import { WsCommentService } from '../../../services/websockets/ws-comment.service';
 import { CommentService } from '../../../services/http/comment.service';
 import { Comment } from '../../../models/comment';
-import { User } from '../../../models/user';
-import { AuthenticationService } from '../../../services/http/authentication.service';
 import { UserRole } from '../../../models/user-roles.enum';
 import { NotificationService } from '../../../services/util/notification.service';
 import { MatDialog } from '@angular/material/dialog';
 import { DeleteAnswerComponent } from '../../creator/_dialogs/delete-answer/delete-answer.component';
-import { LanguagetoolService } from '../../../services/http/languagetool.service';
 import { EventService } from '../../../services/util/event.service';
 import { WriteCommentComponent } from '../write-comment/write-comment.component';
 import { CorrectWrong } from '../../../models/correct-wrong.enum';
@@ -29,7 +26,7 @@ export class CommentAnswerComponent implements OnInit, OnDestroy {
   comment: Comment;
   answer: string;
   isLoading = true;
-  user: User;
+  userRole: UserRole;
   isStudent = true;
   edit = false;
   private _commentSubscription;
@@ -40,15 +37,13 @@ export class CommentAnswerComponent implements OnInit, OnDestroy {
               protected langService: LanguageService,
               protected wsCommentService: WsCommentService,
               protected commentService: CommentService,
-              private authenticationService: AuthenticationService,
-              public languagetoolService: LanguagetoolService,
               public dialog: MatDialog,
               public eventService: EventService) {
   }
 
   ngOnInit() {
-    this.user = this.authenticationService.getUser();
-    if (this.user.role !== UserRole.PARTICIPANT) {
+    this.userRole = this.route.snapshot.data.roles[0];
+    if (this.userRole !== UserRole.PARTICIPANT) {
       this.isStudent = false;
     }
     this.route.params.subscribe(params => {
diff --git a/src/app/components/shared/comment-list/comment-list.component.ts b/src/app/components/shared/comment-list/comment-list.component.ts
index ca87614756f787d498bf547f5f8a0f50e3cf0d20..c9721acae3174f74af44ff118ba71958c4d9a66c 100644
--- a/src/app/components/shared/comment-list/comment-list.component.ts
+++ b/src/app/components/shared/comment-list/comment-list.component.ts
@@ -425,7 +425,7 @@ export class CommentListComponent implements OnInit, OnDestroy {
   }
 
   writeComment() {
-    this.createCommentWrapper.openCreateDialog(this.user)
+    this.createCommentWrapper.openCreateDialog(this.user, this.userRole)
       .subscribe(comment => this.focusCommentId = comment && comment.id);
   }
 
diff --git a/src/app/components/shared/header/header.component.html b/src/app/components/shared/header/header.component.html
index 7913f6fb0270e0cc1968955ff68a81629dca0e73..a509253bb3ed1ccb3452e24ac22fd01b6a706fee 100644
--- a/src/app/components/shared/header/header.component.html
+++ b/src/app/components/shared/header/header.component.html
@@ -143,11 +143,11 @@
           <!-- Moderator board / index -->
 
           <ng-container
-            *ngIf="user && user.role > 0 && (router.url.endsWith('/moderator/comments') || router.url.includes('/comment/'))">
+            *ngIf="userRole > 0 && (router.url.endsWith('/moderator/comments') || router.url.includes('/comment/'))">
 
             <button mat-menu-item
                     tabindex="0"
-                    *ngIf="user.role == 3"
+                    *ngIf="userRole == 3"
                     routerLink="creator/room/{{shortId}}/comments">
               <mat-icon>
                 forum
@@ -157,7 +157,7 @@
 
             <button mat-menu-item
                     tabindex="0"
-                    *ngIf="user.role > 0 && user.role < 3"
+                    *ngIf="userRole > 0 && userRole < 3"
                     routerLink="moderator/room/{{shortId}}/comments">
               <mat-icon>
                 forum
@@ -167,7 +167,7 @@
 
           </ng-container>
 
-          <ng-container *ngIf="user && user.role == 0 && router.url.includes('/comment/')">
+          <ng-container *ngIf="userRole == 0 && router.url.includes('/comment/')">
 
             <button mat-menu-item
                     tabindex="0"
@@ -184,7 +184,8 @@
           <ng-container *ngIf="router.url.endsWith('/comments')">
 
             <button mat-menu-item
-                    *ngIf="user && user.role > 0 && !router.url.includes('/comment/') && !router.url.endsWith('/tagcloud') && !router.url.endsWith('moderator/comments')"
+                    *ngIf="userRole > 0 && !router.url.includes('/comment/') && !router.url.endsWith('/tagcloud') &&
+                           !router.url.endsWith('moderator/comments')"
                     tabindex="0"
                     (click)="showQRDialog();">
               <mat-icon svgIcon="qrcode"
@@ -195,7 +196,7 @@
 
             <button mat-menu-item
                     tabindex="0"
-                    *ngIf="user && user.role > 0 && !router.url.includes('/participant/') &&
+                    *ngIf="userRole > 0 && !router.url.includes('/participant/') &&
                            !router.url.endsWith('moderator/comments')"
                     routerLink="moderator/room/{{shortId}}/moderator/comments">
               <mat-icon>visibility_off</mat-icon>
@@ -232,7 +233,8 @@
           <!-- Room General Options - bot -->
 
           <ng-container
-            *ngIf="user && user.role == 3 && !router.url.includes('/participant') && !router.url.endsWith('/comments') && !router.url.includes('/comment/') && !router.url.endsWith('tagcloud')">
+            *ngIf="userRole == 3 && !router.url.includes('/participant') && !router.url.endsWith('/comments') &&
+                   !router.url.includes('/comment/') && !router.url.endsWith('tagcloud')">
 
 
           </ng-container>
@@ -248,7 +250,7 @@
           </button>
 
           <button mat-menu-item
-                  *ngIf="user && user.role >0 && router.url.endsWith('/tagcloud')"
+                  *ngIf="userRole > 0 && router.url.endsWith('/tagcloud')"
                   tabindex="0"
                   (click)="navigateTopicCloudConfig()">
             <mat-icon aria-label="Configuration Icon">cloud</mat-icon>
@@ -256,7 +258,7 @@
           </button>
 
           <button mat-menu-item
-                  *ngIf="user && user.role >0 && router.url.endsWith('/tagcloud')"
+                  *ngIf="userRole > 0 && router.url.endsWith('/tagcloud')"
                   tabindex="0"
                   (click)="navigateTopicCloudAdministration()">
             <mat-icon aria-hidden="false"
@@ -268,7 +270,7 @@
 
           <button mat-menu-item
                   tabindex="0"
-                  *ngIf="user && user.role > 0 && router.url.endsWith('/tagcloud')"
+                  *ngIf="userRole > 0 && router.url.endsWith('/tagcloud')"
                   (click)="startWorkerDialog()">
             <mat-icon>cloud
             </mat-icon>
@@ -290,7 +292,7 @@
       <!-- General Options -->
 
       <button mat-menu-item
-              *ngIf="user && user.role == 0 && !router.url.endsWith('/tagcloud') && !router.url.endsWith('/quiz')"
+              *ngIf="userRole == 0 && !router.url.endsWith('/tagcloud') && !router.url.endsWith('/quiz')"
               (click)="openUserBonusTokenDialog()"
               tabindex="0">
         <mat-icon class="star">grade</mat-icon>
@@ -301,7 +303,7 @@
       <ng-container *ngIf="router.url.endsWith('/comments') || router.url.endsWith('/tagcloud')">
 
         <button mat-menu-item
-                *ngIf="user && user.role == 0"
+                *ngIf="userRole == 0"
                 tabindex="0"
                 routerLink="participant/room/{{shortId}}">
           <mat-icon>
@@ -311,7 +313,7 @@
         </button>
 
         <button mat-menu-item
-                *ngIf="user && user.role == 3"
+                *ngIf="userRole == 3"
                 tabindex="0"
                 routerLink="creator/room/{{shortId}}">
           <mat-icon>
@@ -321,7 +323,7 @@
         </button>
 
         <button mat-menu-item
-                *ngIf="user && user.role == 2"
+                *ngIf="userRole == 2"
                 tabindex="0"
                 routerLink="moderator/room/{{shortId}}">
           <mat-icon>
diff --git a/src/app/components/shared/header/header.component.ts b/src/app/components/shared/header/header.component.ts
index 55aa4aceea5b564e01bfbf8d02ab8e92e4afdc78..343a6de9a2e99e0fe6f9b4f0ae5522c9ca22f6ad 100644
--- a/src/app/components/shared/header/header.component.ts
+++ b/src/app/components/shared/header/header.component.ts
@@ -40,6 +40,7 @@ import { ThemeService } from '../../../../theme/theme.service';
 export class HeaderComponent implements OnInit, AfterViewInit {
   @ViewChild(ArsComposeHostDirective) host: ArsComposeHostDirective;
   user: User;
+  userRole: UserRole;
   cTime: string;
   shortId: string;
   isSafari = 'false';
@@ -72,7 +73,7 @@ export class HeaderComponent implements OnInit, AfterViewInit {
               private topicCloudAdminService: TopicCloudAdminService,
               private headerService: HeaderService,
               private onboardingService: OnboardingService,
-              public themeService: ThemeService
+              public themeService: ThemeService,
   ) {
   }
 
@@ -81,6 +82,20 @@ export class HeaderComponent implements OnInit, AfterViewInit {
   }
 
   ngOnInit() {
+    this.router.events.subscribe(e => {
+      if (e instanceof NavigationEnd) {
+        const url = e.url.toLowerCase();
+        if (url.startsWith('/participant/')) {
+          this.userRole = UserRole.PARTICIPANT;
+        } else if (url.startsWith('/moderator/')) {
+          this.userRole = UserRole.EXECUTIVE_MODERATOR;
+        } else if (url.startsWith('/creator/')) {
+          this.userRole = UserRole.CREATOR;
+        } else {
+          this.userRole = this.user ? this.user.role : UserRole.PARTICIPANT;
+        }
+      }
+    });
     this.topicCloudAdminService.getAdminData.subscribe(data => {
       this.isAdminConfigEnabled = !TopicCloudAdminService.isTopicRequirementDisabled(data);
     });
@@ -364,7 +379,7 @@ export class HeaderComponent implements OnInit, AfterViewInit {
       autoFocus: false
     });
     confirmDialogRef.componentInstance.target = this.router.url + '/tagcloud';
-    confirmDialogRef.componentInstance.user = this.user;
+    confirmDialogRef.componentInstance.userRole = this.userRole;
   }
 
   public navigateTopicCloudConfig() {
diff --git a/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.html b/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.html
index 9d2f834ee7654e9b7840526bdeee9979b7cb11c4..2d78d89e154f8bd899ed507809f34b1664f64ca0 100644
--- a/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.html
+++ b/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.html
@@ -16,7 +16,7 @@
           {{tagData && tagData.distinctUsers.size}}
         </p>
       </span>
-      <button *ngIf="user && user.role >= 1 && isBlacklistActive" mat-button (click)="addBlacklistWord()">
+      <button *ngIf="userRole > 0 && isBlacklistActive" mat-button (click)="addBlacklistWord()">
         <mat-icon matTooltip="{{'tag-cloud.blacklist-topic' | translate}}">gavel</mat-icon>
       </button>
     </div>
@@ -42,7 +42,7 @@
         </p>
       </span>
     </div>
-    <div class="replacementContainer" *ngIf="user && user.role >= 1">
+    <div class="replacementContainer" *ngIf="userRole > 0">
       <mat-form-field>
         <mat-label>{{'tag-cloud-popup.tag-correction-placeholder' | translate}}</mat-label>
         <input type="text"
diff --git a/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.ts b/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.ts
index 3545c9075a3145298f32a86461548a9f5171bf40..682a9374ba73bf7ab478ef2729022470d50ddf23 100644
--- a/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.ts
+++ b/src/app/components/shared/tag-cloud/tag-cloud-pop-up/tag-cloud-pop-up.component.ts
@@ -1,8 +1,6 @@
 import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
 import { TranslateService } from '@ngx-translate/core';
 import { LanguageService } from '../../../../services/util/language.service';
-import { AuthenticationService } from '../../../../services/http/authentication.service';
-import { User } from '../../../../models/user';
 import { TagCloudDataService, TagCloudDataTagEntry } from '../../../../services/util/tag-cloud-data.service';
 import { Language, LanguagetoolService } from '../../../../services/http/languagetool.service';
 import { FormControl } from '@angular/forms';
@@ -12,6 +10,7 @@ import { NotificationService } from '../../../../services/util/notification.serv
 import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
 import { UserRole } from '../../../../models/user-roles.enum';
 import { SpacyKeyword } from '../../../../services/http/spacy.service';
+import { ActivatedRoute } from '@angular/router';
 
 const CLOSE_TIME = 1500;
 
@@ -29,7 +28,7 @@ export class TagCloudPopUpComponent implements OnInit, AfterViewInit {
   tagData: TagCloudDataTagEntry;
   categories: string[];
   timePeriodText: string;
-  user: User;
+  userRole: UserRole;
   selectedLang: Language = 'en-US';
   spellingData: string[] = [];
   isBlacklistActive = true;
@@ -39,10 +38,10 @@ export class TagCloudPopUpComponent implements OnInit, AfterViewInit {
 
   constructor(private langService: LanguageService,
               private translateService: TranslateService,
-              private authenticationService: AuthenticationService,
               private tagCloudDataService: TagCloudDataService,
               private languagetoolService: LanguagetoolService,
               private commentService: CommentService,
+              private route: ActivatedRoute,
               private notificationService: NotificationService) {
     this.langService.langEmitter.subscribe(lang => {
       this.translateService.use(lang);
@@ -50,12 +49,8 @@ export class TagCloudPopUpComponent implements OnInit, AfterViewInit {
   }
 
   ngOnInit(): void {
+    this.userRole = this.route.snapshot.data.roles[0];
     this.timePeriodText = '...';
-    this.authenticationService.watchUser.subscribe(newUser => {
-      if (newUser) {
-        this.user = newUser;
-      }
-    });
   }
 
   ngAfterViewInit() {
@@ -84,7 +79,7 @@ export class TagCloudPopUpComponent implements OnInit, AfterViewInit {
       return;
     }
     this.spellingData = [];
-    if (this.user && this.user.role > UserRole.PARTICIPANT) {
+    if (this.userRole > UserRole.PARTICIPANT) {
       this.languagetoolService.checkSpellings(tag, 'auto').subscribe(correction => {
         const langKey = correction.language.code.split('-')[0].toUpperCase();
         if (['DE', 'FR', 'EN'].indexOf(langKey) < 0) {
diff --git a/src/app/components/shared/tag-cloud/tag-cloud.component.html b/src/app/components/shared/tag-cloud/tag-cloud.component.html
index d6463d1dd3a32a273ea6306f20ec7b9b823c2d4b..0e15bcb8043d535378d2cea27e3267b1468738dc 100644
--- a/src/app/components/shared/tag-cloud/tag-cloud.component.html
+++ b/src/app/components/shared/tag-cloud/tag-cloud.component.html
@@ -30,12 +30,12 @@
         </angular-tag-cloud>
         <app-active-user *ngIf="room" [alwaysShowInHeader]="true" [room]="this.room" [top]="120"></app-active-user>
       </ars-fill>
-      <button *ngIf="((user && user.role > 0) || (room && !room.questionsBlocked)) && drawer && !drawer.opened"
+      <button *ngIf="((userRole > 0) || (room && !room.questionsBlocked)) && drawer && !drawer.opened"
               mat-fab
               mat-icon-button
               aria-labelledby="add"
               class="fab_add_comment"
-              (click)="createCommentWrapper.openCreateDialog(this.user).subscribe()"
+              (click)="createCommentWrapper.openCreateDialog(user, userRole).subscribe()"
               matTooltip="{{ 'comment-list.add-comment' | translate }}">
         <mat-icon>add</mat-icon>
       </button>
diff --git a/src/app/components/shared/tag-cloud/tag-cloud.component.ts b/src/app/components/shared/tag-cloud/tag-cloud.component.ts
index 510f32dfc8b0bfa273e46e599a27ff65d7429c2d..ecb6d8354a25e8cc08c3423f8824159d73d8047e 100644
--- a/src/app/components/shared/tag-cloud/tag-cloud.component.ts
+++ b/src/app/components/shared/tag-cloud/tag-cloud.component.ts
@@ -161,10 +161,11 @@ export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit {
   }
 
   ngOnInit(): void {
+    this.userRole = this.route.snapshot.data.roles[0];
     this.updateGlobalStyles();
     this.headerInterface = this.eventService.on<string>('navigate').subscribe(e => {
       if (e === 'createQuestion') {
-        this.createCommentWrapper.openCreateDialog(this.user).subscribe();
+        this.createCommentWrapper.openCreateDialog(this.user, this.userRole).subscribe();
       } else if (e === 'topicCloudConfig') {
         if (this.drawer.opened) {
           this.drawer.close();
@@ -176,7 +177,7 @@ export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit {
           minWidth: '50%',
           maxHeight: '95%',
           data: {
-            user: this.user
+            userRole: this.userRole
           }
         });
       } else if (e === 'questionBoard') {
@@ -200,7 +201,6 @@ export class TagCloudComponent implements OnInit, OnDestroy, AfterContentInit {
         this.user = newUser;
       }
     });
-    this.userRole = this.route.snapshot.data.roles[0];
     this.route.params.subscribe(params => {
       this.shortId = params['shortId'];
       this.authenticationService.checkAccess(this.shortId);
diff --git a/src/app/utils/create-comment-wrapper.ts b/src/app/utils/create-comment-wrapper.ts
index 10a69fc62d62189dd5e93edfe1f43ff2cafd2859..576e08ec3b801119d9a28f2d4a46f7f47f0fe8c4 100644
--- a/src/app/utils/create-comment-wrapper.ts
+++ b/src/app/utils/create-comment-wrapper.ts
@@ -11,6 +11,7 @@ import { observable, Observable, of } from 'rxjs';
 import { flatMap } from 'rxjs/internal/operators';
 import { tap } from 'rxjs/operators';
 import { MatSnackBarConfig } from '@angular/material/snack-bar';
+import { UserRole } from '../models/user-roles.enum';
 
 export class CreateCommentWrapper {
   constructor(private translateService: TranslateService,
@@ -20,7 +21,7 @@ export class CreateCommentWrapper {
               private room: Room) {
   }
 
-  openCreateDialog(user: User): Observable<Comment> {
+  openCreateDialog(user: User, userRole: UserRole): Observable<Comment> {
     const dialogRef = this.dialog.open(CreateCommentComponent, {
       width: '900px',
       maxWidth: '100%',
@@ -28,6 +29,7 @@ export class CreateCommentWrapper {
       autoFocus: false,
     });
     dialogRef.componentInstance.user = user;
+    dialogRef.componentInstance.userRole = userRole;
     dialogRef.componentInstance.roomId = this.room.id;
     dialogRef.componentInstance.tags = this.room.tags || [];
     return dialogRef.afterClosed().pipe(