Miscellaneous
Assign multiple tasks per employee**.

Back-end Changes
Find Users With Employee role.
- com.fastcode.timesheetapp1.restcontrollers.extended.UserControllerExtended.java.
@PreAuthorize("hasAnyAuthority('USERSENTITY_READ')")
@RequestMapping(value= "/getEmployees", method = RequestMethod.GET, consumes = {"application/json"}, produces = {"application/json"})
public ResponseEntity getEmployees(@RequestParam(value="search", required=false) String search, @RequestParam(value = "offset", required=false) String offset, @RequestParam(value = "limit", required=false) String limit, Sort sort) throws Exception
- com.fastcode.timesheetapp1.application.extended.Authorization.UserAppServiceExtended.java.
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<FindUsersByIdOutput> findEmployees(String search, Pageable pageable) throws Exception
- com.fastcode.timesheetapp1.domain.extended.authorization.users.IUserRepositoryCustom.java.
This is a custom repository that was added to the generated application.
public interface IUserRepositoryCustom {
Page<FindUsersByIdOutput> findEmployees(String search, Pageable pageable) throws Exception;
}
- com.fastcode.timesheetapp1.domain.extended.authorization.users.IUserRepositoryCustomImpl.java
// Get users with Employee role
public Page<FindUsersByIdOutput> findEmployees(String search, Pageable pageable) throws Exception
Front-end Changes
Update the new Usertask component to assign multiple tasks to an Employee at once in src/app/extended/entities/usertask/new/usertast-new.component.ts
- Add the following two methods:
- selectAssociation (association: IAssociationEntry)
- onSubmit()
- Add a method to fetch users with role Employee (ROLE_Employee) in src/app/extended/admin/user-management/users/user.service.ts**
- public getEmployees(searchFields?: ISearchField[], offset?: number, limit?: number, sort?: string): Observable<IUsers[]>
Move entities menu item under administration
Front-end Changes
- Cut the following code from file src/app/extended/core/main-nav/main-nav.component.html.
<mat-expansion-panel class="expansion-panel" *ngIf="permissions['showEntities']">
<mat-expansion-panel-header class="subnav-header">
<i class="material-icons">
dvr
</i> {{'MainNav.Entities' | translate }}
</mat-expansion-panel-header>
<mat-nav-list class="subnav">
<ng-container *ngFor="let entity of entityList">
<a *ngIf="permissions[entity]" mat-list-item class="mat-sub-list-item" [class.active]="isActive(entity)" [routerLink]="[entity]">
{{entity}}
</a>
</ng-container>
</mat-nav-list>
</mat-expansion-panel>
- Paste it under the administration admin panel (under the following source code section).
<mat-expansion-panel-header class="subnav-header">
<i class="material-icons">
account_box
</i> {{'MainNav.Administration' | translate }}
</mat-expansion-panel-header>
- Create and assign a new permission for displaying entities under administration
- Create a permission with the display name show entities and the name SHOW_ENTITIES to be assigned to the Admin role (ROLE_Admin)
- Make changes in src/app/extended/core/main-nav/main-nav.component.ts to add the permission in the permission map.
<mat-expansion-panel class="expansion-panel"
*ngIf="permissions['authEntities'] || permissions['showEntities'] || permissions['ENTITYHISTORY']">
<mat-expansion-panel-header class="subnav-header">
<i class="material-icons">
account_box
</i> {{'MainNav.Administration' | translate }}
</mat-expansion-panel-header>
<mat-expansion-panel class="expansion-panel" *ngIf="permissions['showEntities']">
<mat-expansion-panel-header class="subnav-header">
<i class="material-icons">
dvr
</i> {{'MainNav.Entities' | translate }}
</mat-expansion-panel-header>
<mat-nav-list class="subnav">
<ng-container *ngFor="let entity of entityList">
<a *ngIf="permissions[entity]" mat-list-item class="mat-sub-list-item" [class.active]="isActive(entity)" [routerLink]="[entity]">
{{entity}}
</a>
</ng-container>
</mat-nav-list>
</mat-expansion-panel>
Check whether a Jwt token contains a specific permission.
Back-end Changes
- Add the method parseTokenAndCheckIfPermissionExists to the file
com\fastcode\timesheetapp1\application\extended\authorization\users\UserAppServiceExtended.java.
public Boolean parseTokenAndCheckIfPermissionExists(String token, String permission)
{
SecurityContext securityContext = SecurityContextHolder.getContext();
Authentication auth = securityContext.getAuthentication();
return auth.getAuthorities().contains(new SimpleGrantedAuthority(permission));
}
Add the permission SWAGGER_API
Front-end Changes
- Add "*ngIf="permissions['SWAGGER_API']"" in link in src/app/extended/core/main-nav/main-nav.component.html
<a mat-list-item class="sidenav-list-item" routerLink="swagger-ui" *ngIf="permissions['SWAGGER_API']">
<i class="material-icons"> settings </i> {{ 'MainNav.API' | translate }}
</a>
- Add SWAGGER_API permission in perm array in setPermission method in the file src/app/extended/core/main-nav/main-nav.component.ts.
setPermissions() {
…….
let perms = ["SWAGGER_API"]
}
Updated about 2 years ago