User Tools

Site Tools


development:applications:ticketer_lite

This is an old revision of the document!


Ticketer Lite Development Details

Updated by Yanjun Wang 17/12/2020

Overview

The purpose of the Ticketer Lite project is to bring the look and feel as well as the technology stack of the existing ticketer application up to date. The Ticketer is one of Errigals main, heavily used applications, yet the application display could be considered quite outdated. The applications front end technology stack is currently a mixture of grails gsp controllers and SmartGWT. These are both old technologies which are no longer favoured. As well as the age of them, they are also quite limiting when it comes to implementing more complex or detailed front end features.

Ticketer Lite application uses 5 services:

  • Ticketer for Business Logic backend
  • ticketer-light-gateway for middle-ware and backend data
  • ticketer-light for frontend
  • idms-proxy for providing SnmpManager data
  • user profile for authentication

Repo:


Architecture

DIAGRAM 1

DIAGRAM 2

List of Tools & Technologies

  • Java 11
  • Spring Boot 2.4
  • Spring R2DBC 2.4
  • Spring WebFlux 2.4
  • graphql-java 16.1
  • Angular 11
  • Apollo Client
  • ngx-translate

Configuration

The ticketer-light is served via the load balancer in our server deployments. Its environment-specific variables are passed via the config.json file to the app at runtime.

Ansible Playbooks

ansible-playbook -i ../env-configuration/ENV/hosts.ini --diff --vault-id @prompt ticketer.yml --extra-vars "jenkins_build_name='ticketer-feature-branches/job/BRANCH' jenkins_job_build_num=NUM actions='upload,configure,deploy,stop,start'"

ansible-playbook -i ../env-configuration/ENV/hosts.ini --diff --vault-id @prompt idms-proxy.yml --extra-vars "jenkins_build_name='idms-proxy-feature-branches/job/BRANCH' appFileExtension='.jar' jenkins_job_build_num=NUM actions='upload,stop,deploy,configure,start'"

ansible-playbook -i ../env-configuration/ENV/hosts.ini --diff --vault-id @prompt redeploy-ticketer-light.yml  --diff -e "branchName=BRANCH appVersion=NUM"

ansible-playbook -i ../env-configuration/ENV/hosts.ini --diff --vault-id @prompt ticketer-light-gateway.yml --extra-vars "jenkins_build_name='ticketer-light-gateway-feature-branches/job/BRANCH' jenkins_job_build_num=NUM appFileExtension='.jar' actions='upload,stop,deploy,configure,start'"

Project Documents

For further information see requirements documentationhere

OAuth2 and CAS Integration

Userprofile is acting as the authentication server for OAuth2, and also integrated with CAS to login to IDMS.

Implementation of an authentication service (AuthService) did the following:

  • Issue a request to the Authentication server to retrieve an authentication token in JWT format.
  • Issue a request to the CAS server to login to IDMS and generate CAS TGT and cookies
  • Save token to browser session storage in the format:
    • access_token
    • token_expires_at
    • CAS cookies

Implementation of an verifier service (AuthVerifierService) did the following:

  • Generate auth token verifier hash
  • Generate auth request parameters

Decode received result using jwt decoder. Implementation of AuthGuard to detect:

  • user authentication
  • Token expiration and refresh

Implementation of a callback component in the angular front end once authenticated had been granted.

User Permission Control

User permissions for mobile are set up and managed via the User Profile Application.

See also documentation for details.

Main Screens

View 1: Login(in Userprofile)

View 2: Ticket List, Search, History

View 3: Ticket Details

View 4: Ticket Forms


Google Analytics

User actions will be tracked via Google Analytics.

development/applications/ticketer_lite.1664797247.txt.gz · Last modified: 2022/10/03 12:40 by 10.91.110.100