Merge branch 'main' of https://git.ymnuktech.ru/ymnuk/yt-gen-app
This commit is contained in:
commit
aa9f582a08
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
Утилита предназначена для генерирования некоторых частей кода на основе файла с описанием для облегчения и ускорения написания приложений.
|
Утилита предназначена для генерирования некоторых частей кода на основе файла с описанием для облегчения и ускорения написания приложений.
|
||||||
|
|
||||||
|
Дополнительный компонент:
|
||||||
|
|
||||||
|
```
|
||||||
|
go install github.com/swaggo/swag/cmd/swag@latest
|
||||||
|
```
|
||||||
|
|
||||||
# Angular
|
# Angular
|
||||||
|
|
||||||
## Генератор
|
## Генератор
|
||||||
|
|
|
@ -54,10 +54,6 @@ func generateFrontendAngularTmpl() {
|
||||||
FileIn: "tmpl/frontend/angular/src/app/guard/auth.guard.ts.tmpl",
|
FileIn: "tmpl/frontend/angular/src/app/guard/auth.guard.ts.tmpl",
|
||||||
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "guard", "auth.guard.ts"),
|
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "guard", "auth.guard.ts"),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
FileIn: "tmpl/frontend/angular/src/app/service/auth.service.ts.tmpl",
|
|
||||||
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "service", "auth.service.ts"),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
FileIn: "tmpl/frontend/angular/src/app/service/notify.service.ts.tmpl",
|
FileIn: "tmpl/frontend/angular/src/app/service/notify.service.ts.tmpl",
|
||||||
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "service", "notify.service.ts"),
|
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "service", "notify.service.ts"),
|
||||||
|
@ -168,7 +164,7 @@ func generateFrontendAngularTmpl() {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
FileIn: "tmpl/frontend/angular/options.json",
|
FileIn: "tmpl/frontend/angular/options.json.tmpl",
|
||||||
FileOut: filepath.Join(AppConfig.OutdirFrontend, "options.json"),
|
FileOut: filepath.Join(AppConfig.OutdirFrontend, "options.json"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -225,6 +221,10 @@ func generateFrontendAngularTmpl() {
|
||||||
FileIn: "tmpl/frontend/angular/src/app/template/main/main.component.html.tmpl",
|
FileIn: "tmpl/frontend/angular/src/app/template/main/main.component.html.tmpl",
|
||||||
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "template", "main", "main.component.html"),
|
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "template", "main", "main.component.html"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
FileIn: "tmpl/frontend/angular/src/app/service/auth.service.ts.tmpl",
|
||||||
|
FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "service", "auth.service.ts"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, staticTmpls := range templs {
|
for _, staticTmpls := range templs {
|
||||||
|
@ -234,6 +234,12 @@ func generateFrontendAngularTmpl() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Сервис аутентификации
|
||||||
|
/*err := templ.PrepareTmplFile("tmpl/frontend/angular/src/app/service/auth.service.ts.tmpl", Project, filepath.Join(AppConfig.OutdirFrontend, "src", "app", "service", "auth.service.ts"))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}*/
|
||||||
|
|
||||||
/*templs = []structs.TmplInOut{
|
/*templs = []structs.TmplInOut{
|
||||||
{
|
{
|
||||||
FileIn: "tmpl/frontend/angular/src/app/page/page.component.ts.tmpl",
|
FileIn: "tmpl/frontend/angular/src/app/page/page.component.ts.tmpl",
|
||||||
|
|
|
@ -13,6 +13,7 @@ func prepareRest(project *structs.Project) *structs.Project {
|
||||||
if project == nil {
|
if project == nil {
|
||||||
log.Fatal("Пустой проект")
|
log.Fatal("Пустой проект")
|
||||||
}
|
}
|
||||||
|
project.Backend.RestGroups = append(project.Backend.RestGroups, "users")
|
||||||
if len(project.Backend.Rest) > 0 {
|
if len(project.Backend.Rest) > 0 {
|
||||||
// Обрабатываем REST для подготовки данных
|
// Обрабатываем REST для подготовки данных
|
||||||
for i := range project.Backend.Rest {
|
for i := range project.Backend.Rest {
|
||||||
|
@ -118,6 +119,17 @@ func prepareRest(project *structs.Project) *structs.Project {
|
||||||
project.Backend.Rest[i].Edit[j].Name = findFieldNameInInterfaceById(project, project.Backend.Rest[i].Data.ID, project.Backend.Rest[i].Filter[j].ID)
|
project.Backend.Rest[i].Edit[j].Name = findFieldNameInInterfaceById(project, project.Backend.Rest[i].Data.ID, project.Backend.Rest[i].Filter[j].ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Собираем группы, чтобы они были уникальными
|
||||||
|
project.Backend.Rest[i].GroupName = templ.FieldNamePrepare(project.Backend.Rest[i].GroupName)
|
||||||
|
runes := []rune(project.Backend.Rest[i].GroupName)
|
||||||
|
runes[0] = []rune(strings.ToLower(string(runes[0])))[0]
|
||||||
|
project.Backend.Rest[i].GroupName = string(runes)
|
||||||
|
for _, grp := range project.Backend.RestGroups {
|
||||||
|
if grp == project.Backend.Rest[i].GroupName {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
project.Backend.RestGroups = append(project.Backend.RestGroups, project.Backend.Rest[i].GroupName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return project
|
return project
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
|
||||||
import { tap } from 'rxjs/operators';
|
import { tap } from 'rxjs/operators';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import jwt_decode from "jwt-decode";
|
import jwt_decode from "jwt-decode";
|
||||||
import { ModelUser, StructsResult, UsersService } from '../module/api';
|
import { ModelUser, StructsResult{{ range $index, $value := .Backend.RestGroups }}, {{ fieldNamePrepare $value }}Service {{ end }}} from '../module/api';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
|
@ -18,14 +18,18 @@ export class AuthService {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private userService: UsersService
|
{{ range $index, $value := .Backend.RestGroups }}
|
||||||
|
private {{ $value }}Service: {{ fieldNamePrepare $value }}Service,
|
||||||
|
{{ end }}
|
||||||
) {
|
) {
|
||||||
if (localStorage.getItem('auth-token') != null) {
|
if (localStorage.getItem('auth-token') != null) {
|
||||||
this._tkn = localStorage.getItem('auth-token');
|
this._tkn = localStorage.getItem('auth-token');
|
||||||
if (this.userService.configuration.apiKeys == null) {
|
{{ range $index, $value := .Backend.RestGroups }}
|
||||||
this.userService.configuration.apiKeys = {}
|
if (this.{{ $value }}Service.configuration.apiKeys == null) {
|
||||||
|
this.{{ $value }}Service.configuration.apiKeys = {}
|
||||||
}
|
}
|
||||||
this.userService.configuration.apiKeys['Authorization'] = `Bearer ${this._tkn}`;
|
this.{{ $value }}Service.configuration.apiKeys['Authorization'] = `Bearer ${this._tkn}`;
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
let jwt = jwt_decode(this.token as string);
|
let jwt = jwt_decode(this.token as string);
|
||||||
if ((jwt as any).roles) {
|
if ((jwt as any).roles) {
|
||||||
|
@ -35,7 +39,7 @@ export class AuthService {
|
||||||
}
|
}
|
||||||
|
|
||||||
login(login: ModelUser): Observable<StructsResult> {
|
login(login: ModelUser): Observable<StructsResult> {
|
||||||
return this.userService.authLoginPost(login).pipe(
|
return this.usersService.authLoginPost(login).pipe(
|
||||||
tap(
|
tap(
|
||||||
(result: StructsResult) => {
|
(result: StructsResult) => {
|
||||||
localStorage.setItem('auth-token', result.data);
|
localStorage.setItem('auth-token', result.data);
|
||||||
|
@ -55,10 +59,13 @@ export class AuthService {
|
||||||
|
|
||||||
set token(value: string | null) {
|
set token(value: string | null) {
|
||||||
this._tkn = value;
|
this._tkn = value;
|
||||||
if (this.userService.configuration.apiKeys == null) {
|
{{ range $index, $value := .Backend.RestGroups }}
|
||||||
this.userService.configuration.apiKeys = {}
|
if (this.{{ $value }}Service.configuration.apiKeys == null) {
|
||||||
|
this.{{ $value }}Service.configuration.apiKeys = {}
|
||||||
}
|
}
|
||||||
this.userService.configuration.apiKeys['Authorization'] = `Bearer ${value}`;
|
this.{{ $value }}Service.configuration.apiKeys['Authorization'] = `Bearer ${this._tkn}`;
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isAuthenticated(): boolean {
|
isAuthenticated(): boolean {
|
||||||
|
@ -69,9 +76,12 @@ export class AuthService {
|
||||||
logout() {
|
logout() {
|
||||||
this.token = null;
|
this.token = null;
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
if (this.userService.configuration.apiKeys != null) {
|
{{ range $index, $value := .Backend.RestGroups }}
|
||||||
delete this.userService.configuration.apiKeys['Authorization']
|
if (this.{{ $value }}Service.configuration.apiKeys != null) {
|
||||||
|
delete this.{{ $value }}Service.configuration.apiKeys['Authorization']
|
||||||
}
|
}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
this.router.navigate(['/login']);
|
this.router.navigate(['/login']);
|
||||||
this._roles = null;
|
this._roles = null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user