SUPPORT-9601: init

This commit is contained in:
adel.ka 2025-11-24 14:08:38 +03:00
parent 84cfb974f4
commit f68ef9d32e
8 changed files with 6 additions and 146 deletions

View file

@ -16,8 +16,7 @@ public final class AuditConstants {
private static final Map<String, String> routeDescriptions = Map.of(
"/", "Личный кабинет ЮР лица",
"/mydata", "Информация об организации",
"/filesentlog", "Журнал взаимодействия",
"/home", "Домашняя страница ЛК РП ЮЛ"
"/filesentlog", "Журнал взаимодействия"
);
private static final Map<Integer, String> downloadTypes = Map.of(

View file

@ -1,85 +0,0 @@
<div class="list-group lk-what">
<div>
<div class="title short-text"><a href=".">Личный кабинет</a> для ведения воинского учета в организациях</div>
<div class="paragraph">
<div class="paragraph-left">
<div class="text icon-checklist">Кому доступен личный кабинет?</div>
<div class="short-text">Организациям, за ĸоторыми заĸреплена обязанность по осуществлению воинсĸого учета в соответствии с <a href="https://www.consultant.ru/document/cons_doc_LAW_18260/">ФЗ от 28.03.1998 No 53-ФЗ</a></div>
</div>
<div class="paragraph-right">
<div class="text icon-clock">Для чего нужен личный кабинет?</div>
<div class="short-text">Для своевременной и оперативной передачи сведений в военĸоматы в элеĸтронном виде</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-access">
<div class="paragraph">
<div class="paragraph-left">
<div class="subtitle short-text">Как получить доступ к Личному кабинету?</div>
</div>
<div class="paragraph-right">
<div class="list">
<div class="esia short-text">Необходимо авторизоваться</div>
<div class="case short-text">Потребуется подтвержденная учетная запись организации</div>
<div class="user short-text">
<a href="src/resources/landing/pdf/Инструкция_пообавлению_роли_сотруднику_в_ЕСИА.pdf" download="Инструкция_пообавлению_роли_сотруднику_в_ЕСИА.pdf">Доступ предоставляется тольĸо сотрудниĸу, наделенному соответствующими полномочиями (ролью) на ведение воинсĸого учета внутри организации</a>
</div>
<div class="docs short-text">
<a href="src/resources/landing/pdf/Инструкция_для_технических_специалистов.pdf" download="Инструкция_для_технических_специалистов.pdf">Информация для технических специалистов</a>
</div>
</div>
<div class="btn-group">
<a id="login-button" href="." class="btn">Войти в Личный кабинет</a>
</div>
</div>
</div>
</div>
<div class="list-group lk-info">
<div class="subtitle">Какие виды сведений доступны для отправки?</div>
<div class="paragraph">
<div class="paragraph-left">
<div class="section-group">
<div class="icon-case">
Сведения о приеме на работу (увольнении), зачислении в образовательную организацию (отчислении)
<div class="muted">Срок передачи сведений: <span class="detailed">до 5 дней</span></div>
</div>
<div class="icon-shield">
Изменения сведений сотрудников, необходимых для ведения воинского учета
<div class="muted">Срок передачи сведений: <span class="detailed">до 5 дней</span></div>
</div>
<div class="icon-clip">
Сообщение о гражданах, не состоящих, но обязанных состоять на воинском учете
<div class="muted">Срок передачи сведений: <span class="detailed">до 3 дней</span></div>
</div>
</div>
</div>
<div class="paragraph-right">
<div class="section-group">
<div class="icon-pers">
Ежегодное предоставление списка граждан мужского пола, подлежащих первоначальной постановке на воинский учет в год достижения ими возраста 17 лет
<div class="muted">Срок передачи сведений: <span class="detailed">ежегодно, в срок до 1 ноября</span></div>
</div>
<div class="icon-building">
Ежегодное предоставление списка сотрудников/обучающихся в организации, подлежащих воинскому учету
<div class="muted">Срок передачи сведений: <span class="detailed">ежегодно, по согласованию с военкоматом</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="list-group lk-pass">
<div class="subtitle">Как передавать сведения?</div>
<div class="pass-list">
<div>Войдите в личный ĸабинет организации через Госуслуги</div>
<div>Подготовьте файл-csv с данными в соответствии с форматом в личном кабинете организации</div>
<div>Убедитесь, что все данные в файле введены ĸорреĸтно</div>
<div>Выберите необходимый вид сведений и загрузите файл</div>
<div>Следите за статусом приема</div>
</div>
</div>
<div class="list-group lk-msg">
<div class="msg-list">
<span class="info"></span>Если в файле будут ошибĸи, данные не будут приняты Реестром и выгрузĸу сведений придется повторить
</div>
</div>

View file

@ -1,19 +1,7 @@
<div class="wrapper" [ngClass]="{'landing': isLanding}">
<div class="wrapper">
<app-header *ngIf="headerVisible">
</app-header>
<div class="container">
<div *ngIf="isLanding" id="browser-check-info">
<div class="browser-check-content">
<div class="browser-check-text">
<p class="plain-text text-header">
Доступ к личному кабинету для юридических лиц осуществляется исключительно через браузеры Яндекс или Chromium GOST, а также необходимо наличие установленного приложения КриптоПро версии CSP 5.0 R3 и выше с расширением КриптоПро ЭЦП Browser plug-in
</p>
<p class="plain-text">
Пожалуйста, попробуйте снова, выбрав один из этих браузеров и установив <a href="https://www.cryptopro.ru/products/csp">КриптоПро CSP</a>, <a href="https://www.cryptopro.ru/products/cades/plugin">КриптоПро ЭЦП Browser plug-in</a>.
</p>
</div>
</div>
</div>
<div class="container-inside" id="webbpm-angular-application-container">
<router-outlet></router-outlet>
<app-footer *ngIf="footerVisible"></app-footer>

View file

@ -3,7 +3,6 @@ import {RouterModule, Routes} from "@angular/router";
import {AccessDeniedComponent} from "./component/access-denied.component";
import {AuthGuard} from "../security/guard/auth.guard";
import {ConfirmExitGuard} from "@webbpm/base-package";
import {HomeLandingComponent} from "./component/home-landing.component";
const appRoutes: Routes = [
{
@ -21,13 +20,6 @@ const appRoutes: Routes = [
loadChildren: 'generated-sources/page-filesentlog.module#PagefilesentlogModule',
canActivate: [AuthGuard],
},
{
path: 'home',
component: HomeLandingComponent,
canActivate: [ConfirmExitGuard],
},
];
@NgModule({

View file

@ -25,7 +25,6 @@ import {ErvuFileUpload} from "../../ervu/component/fileupload/ErvuFileUpload";
import {InMemoryStaticGrid} from "../../ervu/component/grid/InMemoryStaticGrid";
import {ErvuDownloadFileButton} from "../../ervu/component/button/ErvuDownloadFileButton";
import {AuthenticationService} from "../security/authentication.service";
import {HomeLandingComponent} from "./component/home-landing.component";
import {AuditService} from "../../ervu/service/AuditService";
import {
ErvuFileUploadWithAdditionalFiles
@ -43,7 +42,6 @@ export const DIRECTIVES = [
forwardRef(() => ErvuFileUploadWithAdditionalFiles),
forwardRef(() => ErvuDownloadFileButton),
forwardRef(() => InMemoryStaticGrid),
forwardRef(() => HomeLandingComponent),
];
export function checkAuthentication(authService: AuthenticationService): () => Promise<any> {

View file

@ -1,31 +0,0 @@
import {ChangeDetectorRef, Component, OnInit} from "@angular/core";
import {CadesHelper} from "@webbpm/base-package";
import {AccessChecker} from "../../security/AccessChecker";
import {AppConfigService} from "@webbpm/base-package";
@Component({
moduleId: module.id,
selector: "home-landing",
templateUrl: "../../../../../src/resources/template/app/component/home_landing.html",
})
export class HomeLandingComponent implements OnInit {
private cspTimeout: number;
constructor(private cd: ChangeDetectorRef,
private appConfigService: AppConfigService) {
this.cspTimeout = this.appConfigService.getParamValue("csp_load_timeout");
}
ngOnInit(): void {
AccessChecker.checkCsp(this.cspTimeout)
.then((cspCheckPassed) => {
if (AccessChecker.checkBrowser() && cspCheckPassed) {
document.getElementById("browser-check-info").hidden = true;
}
else {
document.getElementById("login-button").classList.add('disabled');
}
});
this.cd.markForCheck();
}
}

View file

@ -10,6 +10,7 @@ import {AccessChecker} from "../AccessChecker";
@Injectable({providedIn: 'root'})
export abstract class AuthGuard implements CanActivate {
private cspTimeout: number;
private readonly UL_LANDING_PAGE_URL = '/lkrp/ul/home.html'
protected constructor(
protected router: Router,
@ -27,15 +28,15 @@ export abstract class AuthGuard implements CanActivate {
let url = new URL(window.location.href);
if (!AccessChecker.checkBrowser()) {
this.progressIndicationService.hideProgressBar();
this.router.navigateByUrl('/home');
window.open(url.origin + this.UL_LANDING_PAGE_URL, "_self");
return false;
}
return AccessChecker.checkCsp(this.cspTimeout)
.then((cspCheckPassed) => {
if (!cspCheckPassed) {
this.router.navigateByUrl('/home');
return Promise.reject("Navigation on /home")
window.open(url.origin + this.UL_LANDING_PAGE_URL, "_self");
return Promise.reject("CSP check failed - redirecting to home")
}
return Promise.resolve(this.checkAccess());
}).then((isAccess) => {

View file

@ -18,7 +18,6 @@ import {AuditConstants, AuditService} from "../../../ervu/service/AuditService";
export class WebbpmComponent {
public headerVisible: boolean = true;
public footerVisible: boolean = true;
public isLanding: boolean = false;
constructor(private router: Router,
private progressIndicationService: ProgressIndicationService,
@ -27,7 +26,6 @@ export class WebbpmComponent {
router.events.subscribe((event: Event) => {
if (event instanceof NavigationStart) {
progressIndicationService.showProgressBar();
this.isLanding = event.url == '/home';
this.cd.markForCheck();
}
else if (event instanceof NavigationEnd