diff --git a/backend/src/graphql-resolvers/user.resolver.ts b/backend/src/graphql-resolvers/user.resolver.ts
index f14ec5a..4d34d4e 100644
--- a/backend/src/graphql-resolvers/user.resolver.ts
+++ b/backend/src/graphql-resolvers/user.resolver.ts
@@ -1,7 +1,7 @@
import { arg, authorized, GraphQLBindings, ID, Int, mutation, query, resolver, ResolverData } from '@loopback/graphql';
import { User } from '../models';
import { repository } from '@loopback/repository';
-import { RevTokenRepository, UserRepository } from '../repositories';
+import { CourseUserRepository, RevTokenRepository, UserRepository } from '../repositories';
import { Context, inject } from '@loopback/core';
import { SzakdolgozatUserService } from '../services';
import { TokenServiceBindings, UserServiceBindings } from '@loopback/authentication-jwt';
@@ -18,6 +18,7 @@ export class UserResolver {
constructor(
@repository('UserRepository') private readonly userRepository: UserRepository,
@repository('RevTokenRepository') private readonly revTokenRepo: RevTokenRepository,
+ @repository('CourseUserRepository') private readonly courseUserRepo: CourseUserRepository,
@inject(UserServiceBindings.USER_SERVICE) private readonly userService: SzakdolgozatUserService,
@inject(GraphQLBindings.RESOLVER_DATA) private readonly resolverData: ResolverData,
@inject(TokenServiceBindings.TOKEN_SERVICE) public jwtService: TokenService,
@@ -50,7 +51,17 @@ export class UserResolver {
// create a JSON Web Token based on the user profile
const token = await this.jwtService.generateToken(userProfile);
- return {token, user};
+ let roles = [];
+ if (user.isAdmin) {
+ roles.push('admin');
+ }
+ if ((await this.courseUserRepo.count({userId: user.id, role: 'teacher'})).count) {
+ roles.push('teacher');
+ }
+ if ((await this.courseUserRepo.count({userId: user.id, role: 'student'})).count) {
+ roles.push('student');
+ }
+ return {token, user, roles};
}
@authorized()
diff --git a/backend/src/graphql-types/user.ts b/backend/src/graphql-types/user.ts
index a08bebc..f696d2c 100644
--- a/backend/src/graphql-types/user.ts
+++ b/backend/src/graphql-types/user.ts
@@ -21,6 +21,8 @@ export class LoginResult {
token: string;
@field()
user: UserResult;
+ @field(returns => [String])
+ roles: string[];
}
@objectType()
diff --git a/backend/src/observers/user-seeder.observer.ts b/backend/src/observers/user-seeder.observer.ts
index c36961d..ad23df7 100644
--- a/backend/src/observers/user-seeder.observer.ts
+++ b/backend/src/observers/user-seeder.observer.ts
@@ -3,6 +3,8 @@ import { UserRepository } from '../repositories';
import { User } from '../models';
import { Mock, MockFactory } from 'mockingbird';
import { genSalt, hash } from 'bcryptjs';
+// noinspection ES6UnusedImports
+import { repository } from '@loopback/repository';
/**
* This class will be bound to the application as a `LifeCycleObserver` during
diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts
index 133b02c..a7fe5d5 100644
--- a/frontend/src/app/app-routing.module.ts
+++ b/frontend/src/app/app-routing.module.ts
@@ -1,14 +1,9 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthCheck } from './auth-check';
+import { StartComponent } from './start.component';
const routes: Routes = [
- {
- path: '',
- children: [
- {path: 'auth', loadChildren: async () => (await import('./auth/auth.module')).AuthModule}
- ]
- },
{
path: '',
canActivate: [AuthCheck],
@@ -22,8 +17,25 @@ const routes: Routes = [
path: 'subjects',
loadChildren: async () => (await import('./subjects/subjects.module')).SubjectsModule,
data: {title: 'Tárgyak'}
+ },
+ {
+ path: 'student',
+ loadChildren: async () => (await import('./students/students.module')).StudentsModule,
+ data: {title: 'Hallagtói kezdőlap'}
+ },
+ {
+ path: '',
+ children: [
+ {path: '', component: StartComponent}
+ ]
}
]
+ },
+ {
+ path: '',
+ children: [
+ {path: 'auth', loadChildren: async () => (await import('./auth/auth.module')).AuthModule}
+ ]
}
];
diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html
index cdf9e56..b1c6ba3 100644
--- a/frontend/src/app/app.component.html
+++ b/frontend/src/app/app.component.html
@@ -6,7 +6,7 @@
Menü
Főoldal
- {{ item.title }}
+ {{ item.title }}
diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts
index 2006876..20441ec 100644
--- a/frontend/src/app/app.component.ts
+++ b/frontend/src/app/app.component.ts
@@ -22,7 +22,8 @@ export class AppComponent implements OnInit {
menu: MenuItem[] = [
{path: 'users', requiredRole: 'admin'},
- {path: 'subjects', requiredRole: 'admin'}
+ {path: 'subjects', requiredRole: 'admin'},
+ {path: 'student', requiredRole: 'student'}
];
pageTitle: string;
@@ -129,8 +130,11 @@ export class AppComponent implements OnInit {
await this.router.navigate(['/']);
}
- getMenuItems(): MenuItem[] {
- return this.menu.filter(item => item.requiredRole === 'admin' ? this.loginService.user?.isAdmin : true); // TODO: Roles
+ getMenuItems(): Observable