Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
183 commits
Select commit Hold shift + click to select a range
c87ff72
Пока не получилось перевести студента
May 31, 2025
8097b6c
Перевод студента
Jun 1, 2025
15fc38e
перевел основные семантикики, но не работает tailwind
Jun 2, 2025
a059336
Баги успешно пофикселись
Jun 2, 2025
5058bda
login page update
Jun 2, 2025
0279c5d
Логин почти готов
Jun 3, 2025
cfe7af0
Авторизация готова
Jun 4, 2025
fe3b208
Global loading
Jun 5, 2025
5c373d9
Добавил сообщения, немного исправил загрузку
Jun 5, 2025
a62cf3c
castom profile
Jun 5, 2025
b0d517f
banner fix
Jun 7, 2025
51866c6
Структура добавление курса
Jun 11, 2025
0553eba
С курсами почти закончил
Jun 12, 2025
149f8c2
merge course-add
Jun 12, 2025
94c5db6
Course theme 1.2
Jun 14, 2025
cc5c021
type fix, course cash add
Jun 19, 2025
2d4e74d
fix not found
Jun 19, 2025
cfcf797
fix update values
Jun 19, 2025
1843ec5
sidebar update
Jun 21, 2025
306e8b8
primereact primeflex fix
Jun 21, 2025
f4273bd
stepper
Jun 23, 2025
197e8a3
переход на tabview
Jun 23, 2025
acb448b
lesson/ верстка таба
Jun 23, 2025
c44a610
ckeditor готов для использования
Jun 24, 2025
3b55470
эффект добавлен
Jun 24, 2025
03d1871
validate
Jun 25, 2025
92e2bd7
validation proccess
Jun 25, 2025
bbb278e
lfjdsakl
Jun 25, 2025
c06cf3b
login fix
Jun 26, 2025
eac7924
fixing
Jun 27, 2025
01b7565
создания карточек, добавление редактирования (верстка)
Jun 27, 2025
6e97ced
Подготовка скедитора
Jun 28, 2025
62b5973
Оптимизация уроков
Jun 28, 2025
b91cd09
Настройка некоторых моментов
Jun 30, 2025
fb0e0f9
Общая структура основных тегов
Jun 30, 2025
07181f5
Оптимизация меню редактирования, confirm диалог окна. Вынесены отдельно
Jun 30, 2025
3b07e32
groupskeleton поправка
Jun 30, 2025
4a90bf0
Исправление верстки home. Распознование роли юсера
Jul 1, 2025
9b327cd
Убрал хранение в кеше
Jul 1, 2025
fff5638
Начало круд для уроков
Jul 2, 2025
b5d727b
перемещение [lessons] в [course]
Jul 2, 2025
7a12fba
Получение текста
Jul 2, 2025
06169e6
добавление axios. Отслеживание статус кодов
Jul 3, 2025
d5fb79b
оптимизация уроков
Jul 3, 2025
e4db6f0
Уроки маленькая поправка
Jul 3, 2025
d17f70e
Удаление/изменение текст контента
Jul 3, 2025
6bffd6b
fix
Jul 4, 2025
25d8404
Оптимизация и подготовка динамической функции получение, отправка
Jul 4, 2025
6a7a151
Тестовый не законченный вариант уроков
Jul 5, 2025
d9da785
Главная оптимизация завершена
Jul 7, 2025
bd44d74
Добавил cencalEdit и тому подобные изменения
Jul 7, 2025
b86ffc8
Валидация добавлена в текст+документы
Jul 7, 2025
91ae185
Фикс
Jul 7, 2025
f00dd4e
Базовая типизация
Jul 7, 2025
438f7cc
некоторые подготовки для usefull link. Добавление usefull
Jul 14, 2025
b76cf03
Основные типы завершены
Jul 15, 2025
f9d10bb
Успешный билд
Jul 15, 2025
baea404
Небольшие изменения
Jul 16, 2025
7ad261f
Временный коммит
Jul 16, 2025
fc23c92
КРУД полезных ссылок завершены
Jul 17, 2025
fa32ec3
большие изменения
Jul 30, 2025
4236f6c
Создание нового layout для студента. предотвращение несанк-о доступа
Jul 30, 2025
eb6518e
тестовый
Jul 31, 2025
82f4302
Исправление добавление фотографии
Jul 31, 2025
375ba3c
Рефакторинг уроков
Jul 31, 2025
18c1fa9
первый этап закончен
Aug 1, 2025
e0f3f8d
проверка сесси завершилось
Aug 1, 2025
5632ee7
Осталось добавить удаление
Aug 1, 2025
ffc4e17
Верстка карточек уроков
Aug 2, 2025
5bb717a
видео круд завершены
Aug 2, 2025
2188a76
процесс мобильной верстки курсов/потоков
Aug 4, 2025
4615fa7
Верстка сояденений потоков завершена
Aug 5, 2025
d74b70f
глобальная загрузка, небольшая работа с таблицами
Aug 6, 2025
37f3b17
передача токенов запросам автоматизированы
Aug 6, 2025
bfaed60
адаптация и поправка уроков
Aug 6, 2025
21a4db1
фикс
Aug 7, 2025
d6c873d
Временная остановка верстки карточек уроков
Aug 11, 2025
5d3871e
Связь потоков к курсам
Aug 13, 2025
eb365d1
верстка и получение студентов завершена
Aug 14, 2025
40765a0
Исправление ошибки при получении потока
Aug 14, 2025
b403286
fix
Aug 14, 2025
c538581
небольшая верстка
Aug 15, 2025
1d66419
модальное окно
Aug 15, 2025
12ced43
fix-auth 2
Aug 15, 2025
4ab323d
fix
Aug 15, 2025
3d78841
Видео селект успешно переключается
Aug 15, 2025
6e8d8d4
Дизайн карточек адаптирован под (преподавтелей, студентов)
Aug 16, 2025
29ab5f2
перенаправление студента
Aug 16, 2025
76802a3
Верстка карточки и расположение на странице сделано
Aug 18, 2025
c21ff58
отображение названий связанных потоков во время связки
Aug 18, 2025
1e7f3c9
Верстка инфо баннера уроков завершена
Aug 18, 2025
8f15ee6
Небольшие изменения
Aug 18, 2025
a4e72bd
Верстка и доработка темы
Aug 19, 2025
0f54cb3
Навигация в сайдбар
Aug 19, 2025
5b2061d
Кнопка (Курс) отображается валидно
Aug 20, 2025
dbf383f
Верстка, подготовка к получению тем
Aug 20, 2025
2734dd3
Небольшие поправки
Aug 21, 2025
9a9fcb6
Установка библиотеки для pdf
Aug 21, 2025
620e6dd
пдф почти готов
Aug 21, 2025
4a18ccb
Темы для студентов готовы
Aug 22, 2025
b9d640d
Поправка добавление документов
Aug 22, 2025
92b8709
Тестовый коммит
Aug 22, 2025
5f2939b
fix
Aug 22, 2025
483c63e
Верстка уроков завершена
Aug 23, 2025
624d622
Пдф более менее хоршо отображается
Aug 23, 2025
8f08bf7
Работа с удалением выбранных данных для fileupload
Aug 23, 2025
5d5a411
Небольшая верстка логика, типизация
Aug 24, 2025
2874e09
Мелкие изменения
Aug 25, 2025
ada5b1a
фото отображается при добавлении на курс
Aug 25, 2025
fb8573e
фикс багов
Aug 25, 2025
001e765
работа с таблицей
Aug 25, 2025
f6a2d0c
создан хук укорачивающий текст
Aug 25, 2025
29c1ae6
после нажатии кнопок добавил спиннер и в моменте когда ждем данные дл…
Aug 25, 2025
faa046a
Навигация в студенте пока работает
Aug 25, 2025
8a9deef
маленькие поправки в верстке
Aug 25, 2025
3bceca8
Проверка сессии и реакции на ошибки
Aug 25, 2025
04f6fc6
Проверка сессии
Aug 26, 2025
e3073eb
перенес таблицы в карточки для мобилок
Aug 26, 2025
69ed0e8
Хлебные крошки и другие изменения
Aug 27, 2025
e0f1fa4
Мобильные удобства 1.0
Aug 27, 2025
1576e8c
некоторые изменения для деплоя, исправления в дизайне
Aug 27, 2025
8315261
Удалил все сакаи компоненты
Aug 27, 2025
d36d964
Мобильные изменения
Aug 28, 2025
0c1003a
Тестовый
Aug 28, 2025
e857acc
небольшие изменения. Перенаправление в old-mooc
Aug 28, 2025
46e09f9
next config
Aug 28, 2025
a263710
Тестовый 2
Aug 28, 2025
585f177
верстка страницы курсов, добавление мобильной таблицы...
Aug 29, 2025
1babdb1
Исправление добавление потоков
Aug 29, 2025
6288b87
верстка страницы курсов
Aug 29, 2025
53add83
Видео карточки отображаются
Aug 30, 2025
9a26320
Видео обрабатывает разные ссылки ютуб
Aug 30, 2025
33877ad
Добавление дополнительных функции уроков, адаптация инпутов
Aug 30, 2025
0f15eca
Исправление навигации студентов
Aug 30, 2025
45ae7e7
добавление превью к видео
Sep 1, 2025
beb063f
Добавление инфы об уроках
Sep 1, 2025
b7cb34c
Бета версия
Sep 3, 2025
90a6de0
изменение тем
Sep 3, 2025
8d3566c
Новые уроки
Sep 5, 2025
3a7e7aa
Тест почти завершон
Sep 8, 2025
3e8346a
Ошибка с пдф пока не появляется
Sep 8, 2025
d9d3c4e
круд теста завершен, активные шаги начинаются по умолчанию с конца
Sep 8, 2025
c793a3a
Успешный круд тем. Дизайн тестов
Sep 8, 2025
6a012d2
Связь потоков к курсам
Sep 9, 2025
6e9f3da
Убрал сайдбар в курсе. Фикс ошибки в уроках
Sep 9, 2025
7825157
Практические задания
Sep 9, 2025
8e6fabe
Доработка потоков
Sep 9, 2025
b965c46
Доработка ошибки темы
Sep 9, 2025
17e4460
Удаление темы
Sep 9, 2025
09a51a6
Публикация курсов
Sep 9, 2025
b0821c6
build
Sep 10, 2025
7c1a8ac
Выбор позиции при создании темы
Sep 10, 2025
6f1463d
runtime error fix
Sep 11, 2025
43f4efb
Небольшие изменения
Sep 11, 2025
fa9e38e
Убрал кнопку сайдбара в курсах, убрал в сайдбаре лишние навигации ост…
Sep 11, 2025
b13efde
поиск кей проп ошибок
Sep 11, 2025
cb6a4c6
верстка
Sep 11, 2025
aef3678
убрал ссылки на студентов после коннекта
Sep 11, 2025
dffb2d1
Добавил полезные ссылки
Sep 11, 2025
3bd2077
Skeleton для выбора вариантов шага
Sep 11, 2025
853d53c
Убрал кнопку входа
Sep 12, 2025
d74a879
Убрал кнопку входа
Sep 12, 2025
d5f4039
Верстка шагов, фикс страницы с пдф
Sep 12, 2025
9a498de
Данные футера запрашиваю с бекенда
Sep 12, 2025
03b257a
Верстка
Sep 12, 2025
874ab68
новый поток
Sep 15, 2025
6dc5ecc
Публикация и добавление зав кафедры
Sep 15, 2025
701e3a3
Каждый компонент вызывает загрузку сам
Sep 16, 2025
2680789
Проверка уроков
Sep 16, 2025
6dc030a
Верстка зав кафедры, проверка ошибок у уроков
Sep 17, 2025
164f35b
Отображение что в теме нету уроков
Sep 17, 2025
34a0a69
Добавил название курса для уроков зав кафедры
Sep 17, 2025
c292d93
убрал ошибки с кей проп
Sep 17, 2025
c4b8c79
Перевод на русский, верстка зав кафедры
Sep 18, 2025
e0bee72
Добавление чекбокса на рассмотрение
Sep 18, 2025
2352fd0
Изменил паддинги в responzive.scss - content.scss
Sep 18, 2025
980961e
Верстка
Sep 18, 2025
7c5670e
Обратно изменил главные паддинги
Sep 18, 2025
0242668
Добавил сообщение о минимальном требовании на рассмотрение
Sep 18, 2025
dcecc41
Включил функции проверки сесси. Работа с доступом
Sep 18, 2025
0682654
Поправление верстки
Sep 19, 2025
f72e4bf
Временно заменил useeffect для обработки данных в lessons для изменен…
Sep 19, 2025
ad5ded9
Повторно написал исчезнувшие данные
Sep 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 48 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/deployment.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/prettier.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/sakai-react.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/webServers.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

157 changes: 112 additions & 45 deletions app/(full-page)/auth/login/page.tsx
Original file line number Diff line number Diff line change
@@ -1,63 +1,130 @@
/* eslint-disable @next/next/no-img-element */
'use client';
import { useRouter } from 'next/navigation';
import React, { useContext, useState } from 'react';
import { Checkbox } from 'primereact/checkbox';
import { Button } from 'primereact/button';
import React, { useContext, useEffect, useState } from 'react';
import { Password } from 'primereact/password';
import { LayoutContext } from '../../../../layout/context/layoutcontext';
import { InputText } from 'primereact/inputtext';
import { classNames } from 'primereact/utils';

import { useForm } from 'react-hook-form';
import { schema } from '@/schemas/authSchema';
import { yupResolver } from '@hookform/resolvers/yup';
import { Controller } from 'react-hook-form';
import { getUser, login } from '@/services/auth';
import FancyLinkBtn from '@/app/components/buttons/FancyLinkBtn';
import { logout } from '@/utils/logout';
import { LoginType } from '@/types/login';
import { useMediaQuery } from '@/hooks/useMediaQuery';

const LoginPage = () => {
const [password, setPassword] = useState('');
const [checked, setChecked] = useState(false);
const { layoutConfig } = useContext(LayoutContext);
const { layoutConfig, setUser, setMessage, setGlobalLoading, setDepartament, departament } = useContext(LayoutContext);

const router = useRouter();
const containerClassName = classNames('surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden', { 'p-input-filled': layoutConfig.inputStyle === 'filled' });
const media = useMediaQuery('(max-width: 1030px)');
// const containerClassName = classNames('surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden', { 'p-input-filled': layoutConfig.inputStyle === 'filled' });

return (
<div className={containerClassName}>
<div className="flex flex-column align-items-center justify-content-center">
<img src={`/layout/images/logo-${layoutConfig.colorScheme === 'light' ? 'dark' : 'white'}.svg`} alt="Sakai logo" className="mb-5 w-6rem flex-shrink-0" />
<div
style={{
borderRadius: '56px',
padding: '0.3rem',
background: 'linear-gradient(180deg, var(--primary-color) 10%, rgba(33, 150, 243, 0) 30%)'
}}
>
<div className="w-full surface-card py-8 px-5 sm:px-8" style={{ borderRadius: '53px' }}>
<div className="text-center mb-5">
<img src="/demo/images/login/avatar.png" alt="Image" height="50" className="mb-3" />
<div className="text-900 text-3xl font-medium mb-3">Welcome, Isabel!</div>
<span className="text-600 font-medium">Sign in to continue</span>
</div>
const {
register,
handleSubmit,
formState: { errors },
control
} = useForm({
resolver: yupResolver(schema),
mode: 'onChange'
});

const onSubmit = async (value: LoginType) => {
const user = await login(value);
if (user && user.success) {
document.cookie = `access_token=${user.token.access_token}; path=/; Secure; SameSite=Strict; expires=${user.token.expires_at}`;
const token = user.token.access_token;
if (token) {
const res = await getUser();
console.log(res);

try {
if (res?.success) {
if (res?.user.is_working) {
if(res.roles && res.roles.length > 0){
const roleCheck = res.roles.find((i:{id_role: number})=> i.id_role)
if(roleCheck){
setDepartament({info: roleCheck.roles_name.info_ru, last_name:res.user?.last_name, name:res?.user.name, father_name:res.user?.father_name});
window.location.href = '/faculty';
} else {
window.location.href = '/course';
}
} else {
window.location.href = '/course';
}
}
if(res?.user.is_student){
window.location.href = '/';
}
} else {
setMessage({
state: true,
value: { severity: 'error', summary: 'Ошибка при авторизации', detail: 'Повторите позже' }
}); // messege - Ошибка при авторизации, повторите позже
logout({ setUser, setGlobalLoading });
console.log('Ошибка при получении пользователя');
}
} catch (error) {
setMessage({
state: true,
value: { severity: 'error', summary: 'Ошибка при авторизации', detail: 'Повторите позже' }
}); // messege - Ошибка при авторизации, повторите позже
logout({ setUser, setGlobalLoading });
console.log('Ошибка при получении пользователя');
}
}
} else {
setMessage({
state: true,
value: { severity: 'error', summary: 'Ошибка при авторизации', detail: 'Повторите позже' }
}); // messege - Ошибка при авторизации при авторизации
}
};

<div>
<label htmlFor="email1" className="block text-900 text-xl font-medium mb-2">
Email
</label>
<InputText id="email1" type="text" placeholder="Email address" className="w-full md:w-30rem mb-5" style={{ padding: '1rem' }} />
const onError = (errors: any) => {
console.log('Ошибки формы:', errors);
setMessage({
state: true,
value: { severity: 'error', summary: 'Ошибка при авторизации', detail: 'Введите корректные данные' }
}); // messege - Ошибка при авторизации
};

<label htmlFor="password1" className="block text-900 font-medium text-xl mb-2">
Password
</label>
<Password inputId="password1" value={password} onChange={(e) => setPassword(e.target.value)} placeholder="Password" toggleMask className="w-full mb-5" inputClassName="w-full p-3 md:w-30rem"></Password>
return (
<div className={`flex flex-col gap-4 pt-4 h-[100vh] login-bg`}>
{/* <div className={`flex flex-col gap-4 pt-4 h-[100vh] ${!media && 'login-bg'}`}> */}
{/* <InfoBanner title="Кирүү" titleSize={{ default: '30px', sm: '40px' }} /> */}
<div className="flex gap-4 flex-column lg:flex-row items-center justify-evenly px-4 mb-8">
<div className="user-img">
{/* <img src="/layout/images/enrolled-img2.png" className="w-[450px] object-cover" alt="" /> */}
<img src="/layout/images/no-image.png" className="w-[450px] object-cover" alt="" />
</div>

<div className="flex align-items-center justify-content-between mb-5 gap-5">
<div className="flex align-items-center">
<Checkbox inputId="rememberme1" checked={checked} onChange={(e) => setChecked(e.checked ?? false)} className="mr-2"></Checkbox>
<label htmlFor="rememberme1">Remember me</label>
</div>
<a className="font-medium no-underline ml-2 text-right cursor-pointer" style={{ color: 'var(--primary-color)' }}>
Forgot password?
</a>
</div>
<Button label="Sign In" className="w-full p-3 text-xl" onClick={() => router.push('/')}></Button>
<div className={`w-[90%] sm:w-[500px] shadow-2xl bg-white py-6 px-3 md:py-8 sm:px-4 md:px-8 rounded`}>
<h1 className='text-3xl sm:text-4xl font-bold inline-block border-b-2 pb-1 border-[var(--mainColor)]'>Вход</h1>
<form onSubmit={handleSubmit(onSubmit, onError)} className="flex flex-col gap-4 md:gap-6">
<div className="flex flex-col">
{/* <label htmlFor="email1" className="block text-900 text-[16px] md:text-xl font-medium mb-1 md:mb-2">
MyEdu email
</label> */}
<InputText {...register('email')} id="email1" type="text" placeholder="[email protected]" className="w-[90%] p-2 sm:p-3" />
{errors.email && <b className="text-[red] text-[12px] ml-2">{errors.email.message}</b>}
</div>
</div>
<div className="flex flex-col">
<Controller
name="password"
control={control}
defaultValue=''
render={({ field }) => <Password {...field} toggleMask className={`w-[100%]`} inputClassName="w-[90%] p-2 sm:p-3" inputStyle={{ marginRight: '15px' }} feedback={false} />}
/>
{errors.password && <b className="text-[red] text-[12px] ml-2">{errors.password.message}</b>}
</div>

<FancyLinkBtn btnWidth={'90%'} backround={'--mainColor'} effectBg={'--titleColor'} title={'Войти'} />
</form>
</div>
</div>
</div>
Expand Down
Loading