This commit is contained in:
Daniel Ponte 2024-11-22 14:10:27 -05:00
parent 6d16458c71
commit 81aa96a77b
6 changed files with 18 additions and 21 deletions

View file

@ -1,5 +1,5 @@
import { Component, inject } from '@angular/core';
import { RouterModule, RouterOutlet, RouterLink } from '@angular/router';
import { RouterModule, RouterOutlet, RouterLink, RouterLinkActive } from '@angular/router';
import { CommonModule } from '@angular/common';
import { AuthService } from './login/auth.service';
import { NgIconComponent, provideIcons } from '@ng-icons/core';
@ -22,6 +22,7 @@ import {
RouterOutlet,
RouterModule,
RouterLink,
RouterLinkActive,
NgIconComponent,
],
templateUrl: './app.component.html',

View file

@ -1,5 +1,5 @@
import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
import { provideRouter } from '@angular/router';
import { provideRouter, withDebugTracing } from '@angular/router';
import { environment } from './../environments/environment';
import {
HttpRequest,
@ -43,7 +43,7 @@ export function authIntercept(
export const appConfig: ApplicationConfig = {
providers: [
provideZoneChangeDetection({ eventCoalescing: true }),
provideRouter(routes),
provideRouter(routes, withDebugTracing()),
provideHttpClient(withInterceptors([apiBaseInterceptor, authIntercept])),
],
};

View file

@ -11,9 +11,9 @@ import { ImportComponent } from './talkgroups/import/import.component';
import { AuthGuard } from './auth.guard';
export const routes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{ path: 'home', component: HomeComponent, canActivate: [AuthGuard] },
{ path: 'login', component: LoginComponent },
{ path: '', component: HomeComponent, canActivate: [AuthGuard] },
{ path: '**', redirectTo: '' },
{ path: 'talkgroups', component: TalkgroupsComponent },
{ path: 'talkgroups/import', component: ImportComponent },
{ path: 'talkgroups/:sys/:tg', component: TalkgroupRecordComponent },

View file

@ -1,9 +1,14 @@
import { CanActivateFn } from '@angular/router';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
export const AuthGuard: CanActivateFn = (route, state) => {
if (sessionStorage.getItem('jwt') == null) {
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (sessionStorage.getItem('jwt') != null) {
return true;
}
this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});
return false;
} else {
return true;
}
};

View file

@ -187,7 +187,7 @@ func (a *Auth) routeAuth(w http.ResponseWriter, r *http.Request) {
var err error
switch r.Header.Get("Content-Type") {
switch strings.Split(r.Header.Get("Content-Type"), ";")[0] {
case "application/json":
err = json.NewDecoder(r.Body).Decode(&creds)
default:

View file

@ -62,15 +62,6 @@ func (s *Server) setupRoutes() {
})
}
func (s *Server) notFoundRedirect(w http.ResponseWriter, r *http.Request) {
if strings.HasPrefix(strings.TrimLeft(r.URL.Path, "/"), "api/") {
http.NotFound(w, r)
return
}
http.Redirect(w, r, "/index.html", http.StatusFound)
}
func (s *Server) rateLimit(r chi.Router) {
if s.conf.RateLimit.Verify() {
r.Use(rateLimiter(&s.conf.RateLimit))
@ -89,7 +80,7 @@ func (s *Server) clientRoute(r chi.Router, clientRoot fs.FS) {
f, err := hfs.Open(pc)
if err != nil {
if errors.As(err, &pe) {
s.notFoundRedirect(w, r)
http.ServeFileFS(w, r, clientRoot, "/index.html")
return
}
} else {