Changes between Version 22 and Version 23 of Имплементација


Ignore:
Timestamp:
12/21/21 17:00:29 (2 years ago)
Author:
151545
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Имплементација

    v22 v23  
    2121Корегирано
    2222}}}
    23 Иницијалното репо за апликацијата го креирав на Github [https://docs.github.com/en/get-started/quickstart/hello-world] платформата за хостирање или зачувување на код. Преку интерфејсот на Github ја добиваме истата структура на апликацијата која ја развиваме. На многу едноставен начин може да се зачуваат измени од кодот преку Git алатката и да се управува со верзии на кодот. Секое репо може да има неколку гранки во кои на една од нив се развива  целата апликација и во иднина може да се креираат дополнителни гранки за нови фукнционалности. Тоа ни олеснува да пристапиме до некоја постара верзија на апликациајта каде што нема дополнителни функционалности кои не се потребни. Во процесот на развој ја користев гранката develop и потоа кодот ја пресликав на главната гранка master. Кога завршив со развојот направив пресликување на целото репо во проектиот простор на факултет каде може да го добиете изворот од кодот и логови за направени измени. Дополнително апликацијата ја хостирав на сервер за тестирање кој што ќе биде опишан во делот "Презентација".\\
     23Иницијалното репо за апликацијата го креирав на Github [11] платформата за хостирање или зачувување на код. Преку интерфејсот на Github ја добиваме истата структура на апликацијата која ја развиваме. На многу едноставен начин може да се зачуваат измени од кодот преку Git алатката и да се управува со верзии на кодот. Секое репо може да има неколку гранки во кои на една од нив се развива  целата апликација и во иднина може да се креираат дополнителни гранки за нови фукнционалности. Тоа ни олеснува да пристапиме до некоја постара верзија на апликациајта каде што нема дополнителни функционалности кои не се потребни. Во процесот на развој ја користев гранката develop и потоа кодот ја пресликав на главната гранка master. Кога завршив со развојот направив пресликување на целото репо во проектиот простор на факултет каде може да го добиете изворот од кодот и логови за направени измени. Дополнително апликацијата ја хостирав на сервер за тестирање кој што ќе биде опишан во делот "Презентација".\\
    2424Линк до изворниот код: **[https://develop.finki.ukim.mk/projects/SaveSpace/browser Извор - SaveSpace]**
    2525
     
    3030Корегирано
    3131}}}
    32 Структурата на датотеките во Laravel е по избор корисникот но за да е во тек со други апликации и разбирлива за другите добро е да се воздржиме на класичната MVC структура. Model-View-Controller (MVC) [https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm] е модел кој ја дели апликацијата на три главни логички компоненти: модел, приказ и контролер. Секоја од овие компоненти е изградена за да се справи со специфични развојни аспекти на апликацијата. MVC е една од најчесто користените индустриски стандардни рамки за развој на веб за креирање скалабилни и проширливи проекти.
     32Структурата на датотеките во Laravel е по избор корисникот но за да е во тек со други апликации и разбирлива за другите добро е да се воздржиме на класичната MVC структура. Model-View-Controller (MVC) [12] е модел кој ја дели апликацијата на три главни логички компоненти: модел, приказ и контролер. Секоја од овие компоненти е изградена за да се справи со специфични развојни аспекти на апликацијата. MVC е една од најчесто користените индустриски стандардни рамки за развој на веб за креирање скалабилни и проширливи проекти.
    3333
    3434- Модел\\
     
    4343Во Laravel Root directory се нарекува главниот директориум каде се наоѓа целиот изворен код од апликацијата. App апликации
    4444директориумот на апликацијата го содржи основниот код на апликација. Директориумот Config, како што имплицира името, ги содржи сите конфигурациски датотеки на апликација. Database директориумот ги содржи миграциите на базата на податоци, вредностите кои се запишуваат за моделот и семиња за тестирање на датабазата. Public директориум ја содржи датотеката index.php, која е влезна точка за сите барања што влегуваат во апликацијата и го конфигурира автоматското вчитување. Во овој директориум се сместени и  сликите како и интерфејсите на апликацијата. Resources директориумот ги содржи фронтенд делот т.е. интерфејсите на апликацијата кои ќе бидат рендерирани во соодветен код за приказ на прелистувач, како на пример некомпајлирани скрипти. Во овој директориум се сместени и сите јазични датотеки. Директориумот Routes ги содржи сите дефиниции за рути за апликацијата. Иницијално, неколку датотеки со рути се вклучени со Laravel: web.php, api.php, console.php и channels.php. Датотеката web.php содржи рути кои ги поставува во групата веб-базиран софтвер, која обезбедува контрола на сесија, заштита од CSRF и шифрирање на колачиња. Во мојот пример сите рути се дефинирани во web.php датотеката.
    45 .php е местото каде што можете да ги регистрирате сите канали за емитување настани што ги поддржува вашата апликација. Storage директориумот за складирање ги содржи сите компајлирани шаблони како и конфигурацијата за зачувување на датотеки. Директориумот на апликации може да се користи за складирање на сите датотеки генерирани од вашата апликација. Рамковниот директориум се користи за складирање на датотеки и кешови генерирани од рамка. Конечно, директориумот за дневници ги содржи датотеките за дневници на вашата апликација.Vendor директориумот ги содржи сите зависности од Composer [https://getcomposer.org/] кој што претставува управуавач на зависносни пакети во PHP. Поголемиот дел од вашата апликација е сместена во директориумот App кој содржи дополнителни директориуми како што се Console, Http и Providers. Во директориумот Console додадов clearAll класа која што како една команда ми заменува четири команди во исто време за чистење на кеш и конфигурација на апликацијата. Директориумот Http ги содржи контролерите, конфигурацијата за автентикација и валидациските класи за моделите. Речиси целата логика за справување со барањата кои влегуваат во апликацијата се запишани во овој директориум. Директориумот Models ги содржи сите класи на Eloquent модели. Eloquent ORM [https://laravel.com/docs/8.x/eloquent] вклучен во Laravel обезбедува едноставна имплементација за работа со базата на податоци. Секоја табела со база на податоци има соодветен „модел“ кој се користи за интеракција со таа табела. Директориумот Notifications иницијално не постои, но се креира автоматски ако ја извршите командата Artisan make:notification. Истиот ги содржи сите известувања што ги испраќа апликацијата, како што се едноставни известувања за настани што се случуваат во апликацијата. Во конкретниот пример праќам нотификација за промена или заборавена лозинка, верификација на кориснички профил, промена на е-адреса како и OTP код за верификација на најавата преку маил.
     45.php е местото каде што можете да ги регистрирате сите канали за емитување настани што ги поддржува вашата апликација. Storage директориумот за складирање ги содржи сите компајлирани шаблони како и конфигурацијата за зачувување на датотеки. Директориумот на апликации може да се користи за складирање на сите датотеки генерирани од вашата апликација. Рамковниот директориум се користи за складирање на датотеки и кешови генерирани од рамка. Конечно, директориумот за дневници ги содржи датотеките за дневници на вашата апликација.Vendor директориумот ги содржи сите зависности од Composer [13] кој што претставува управуавач на зависносни пакети во PHP. Поголемиот дел од вашата апликација е сместена во директориумот App кој содржи дополнителни директориуми како што се Console, Http и Providers. Во директориумот Console додадов clearAll класа која што како една команда ми заменува четири команди во исто време за чистење на кеш и конфигурација на апликацијата. Директориумот Http ги содржи контролерите, конфигурацијата за автентикација и валидациските класи за моделите. Речиси целата логика за справување со барањата кои влегуваат во апликацијата се запишани во овој директориум. Директориумот Models ги содржи сите класи на Eloquent модели. Eloquent ORM [https://laravel.com/docs/8.x/eloquent] вклучен во Laravel обезбедува едноставна имплементација за работа со базата на податоци. Секоја табела со база на податоци има соодветен „модел“ кој се користи за интеракција со таа табела. Директориумот Notifications иницијално не постои, но се креира автоматски ако ја извршите командата Artisan make:notification. Истиот ги содржи сите известувања што ги испраќа апликацијата, како што се едноставни известувања за настани што се случуваат во апликацијата. Во конкретниот пример праќам нотификација за промена или заборавена лозинка, верификација на кориснички профил, промена на е-адреса како и OTP код за верификација на најавата преку маил.
    4646
    4747[[Image(app_structure.png)]]
     
    7171}}}
    7272
    73 Ќе започнам со објаснување на начинот на најава и автентикација во апликацијата. За автентикација се користи Middleware [https://laravel.com/docs/8.x/lifecycle] кој претставува механизам за проверка и филтрирање на HTTP барањата на апликацијата. Laravel вклучува софтвер кој потврдува дека корисникот е автентициран. Ако корисникот не е автентициран, ќе го пренасочи корисникот на екранот за најава. Меѓутоа, ако корисникот е автентициран, ќе дозволи барањето да продолжи да се процесира. Освен базичните класи за автентикација кои ни ги овозможува Laravel во Middleware директориумот ги додаваме сите проверки кои му дозволуваат на корисникот да се автентицира.
     73Ќе започнам со објаснување на начинот на најава и автентикација во апликацијата. За автентикација се користи Middleware [14] кој претставува механизам за проверка и филтрирање на HTTP барањата на апликацијата. Laravel вклучува софтвер кој потврдува дека корисникот е автентициран. Ако корисникот не е автентициран, ќе го пренасочи корисникот на екранот за најава. Меѓутоа, ако корисникот е автентициран, ќе дозволи барањето да продолжи да се процесира. Освен базичните класи за автентикација кои ни ги овозможува Laravel во Middleware директориумот ги додаваме сите проверки кои му дозволуваат на корисникот да се автентицира.
    7474
    7575На пример, во апликацијата предуслов за најава е да се креира лозинка за да се активира профилот на корисникот. Laravel го олеснува начинот на заштитата на апликацијата од напади за не верифицирани барања меѓу страници со помош на CSRF. Laravel автоматски генерира CSRF „токен“ за секоја активна корисничка сесија управувана од апликацијата. Овој токен се користи за да се потврди дека автентицираниот корисник е тој што всушност ги поставува барањата до апликацијата. Во секоја форма преку која праќаме HTTP барање потребно е да се додаде и CSFR токенот.