Работает личный кабинет пользователя
This commit is contained in:
parent
bcd851627e
commit
f36d9c8d1d
@ -43,8 +43,6 @@ namespace PolyclinicDatabaseImplement.Models
|
||||
FIO = model.FIO;
|
||||
Email = model.Email;
|
||||
Password = model.Password;
|
||||
Role = model.Role;
|
||||
FIO = model.FIO;
|
||||
}
|
||||
|
||||
public UserViewModel GetViewModel => new()
|
||||
|
@ -1,4 +1,5 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using PolyclinicContracts.BindingModels;
|
||||
using PolyclinicContracts.BusinessLogicsContracts;
|
||||
using PolyclinicContracts.SearchModels;
|
||||
@ -97,13 +98,54 @@ namespace PolyclinicWebAppImplementer.Controllers
|
||||
|
||||
[HttpGet]
|
||||
[HttpPost]
|
||||
public IActionResult Privacy()
|
||||
public IActionResult Privacy(UserPrivacyModel model)
|
||||
{
|
||||
if (LoginManager.LogginedUser == null)
|
||||
var currentUser = LoginManager.LogginedUser;
|
||||
if (currentUser == null)
|
||||
{
|
||||
return RedirectToAction("Login");
|
||||
}
|
||||
return View();
|
||||
if (HttpContext.Request.Method == "POST")
|
||||
{
|
||||
var errors = new List<string>();
|
||||
var checkedUser = _userLogic.ReadElement(new UserSearchModel { Email = model.Email });
|
||||
if (checkedUser != null && checkedUser.Id != LoginManager.LogginedUser.Id)
|
||||
{
|
||||
errors.Add("Пользователь с таким Email уже есть");
|
||||
}
|
||||
if (model.Password != model.ConfirmPassword)
|
||||
{
|
||||
errors.Add("Пароли не совпадают");
|
||||
}
|
||||
if (errors.Count > 0)
|
||||
{
|
||||
model.Errors = errors;
|
||||
model.Password = string.Empty;
|
||||
model.ConfirmPassword = string.Empty;
|
||||
return View(model);
|
||||
}
|
||||
var user = new UserBindingModel
|
||||
{
|
||||
Id = currentUser.Id,
|
||||
FIO = model.FIO,
|
||||
Email = model.Email,
|
||||
Password = model.Password.IsNullOrEmpty() ? LoginManager.LogginedUser.Password : model.Password,
|
||||
};
|
||||
_userLogic.Update(user);
|
||||
LoginManager.LogginedUser = _userLogic.ReadElement(new UserSearchModel { Id = model.Id });
|
||||
return RedirectToAction("Privacy");
|
||||
}
|
||||
else
|
||||
{
|
||||
model = new()
|
||||
{
|
||||
Id = currentUser.Id,
|
||||
FIO = currentUser.FIO,
|
||||
Email = currentUser.Email,
|
||||
Role = currentUser.Role
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,16 @@
|
||||
namespace PolyclinicWebAppImplementer.Models
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace PolyclinicWebAppImplementer.Models
|
||||
{
|
||||
public class RegisterModel
|
||||
{
|
||||
[DisplayName("ФИО")]
|
||||
public string FIO { get; set; } = string.Empty;
|
||||
[DisplayName("Email")]
|
||||
public string Email { get; set; } = string.Empty;
|
||||
[DisplayName("Пароль")]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
[DisplayName("Повторите пароль")]
|
||||
public string ConfirmPassword { get; set; } = string.Empty;
|
||||
public List<string> Errors { get; set; } = new();
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
using PolyclinicDataModels.Enums;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace PolyclinicWebAppImplementer.Models
|
||||
{
|
||||
public class UserPrivacyModel : RegisterModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
[DisplayName("Роль")]
|
||||
public UserRole Role { get; set; }
|
||||
}
|
||||
}
|
@ -1,6 +1,38 @@
|
||||
@{
|
||||
@model UserPrivacyModel
|
||||
@{
|
||||
ViewBag.SelectedSiteMenuItem = SiteMenuItems.Privacy;
|
||||
}
|
||||
<h4>Личный кабинет</h4>
|
||||
@foreach (var item in Model.Errors)
|
||||
{
|
||||
<div class="alert alert-danger" role="alert">
|
||||
@item
|
||||
</div>
|
||||
}
|
||||
<form method="post">
|
||||
<input hidden readonly asp-for="Id"/>
|
||||
<div class="mb-3">
|
||||
<label asp-for="FIO"></label>
|
||||
<input required asp-for="FIO" />
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="Email"></label>
|
||||
<input required asp-for="Email" />
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="Role"></label>
|
||||
<input readonly asp-for="Role" />
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="Password"></label>
|
||||
<input type="password" asp-for="Password" />
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<input type="password" asp-for="ConfirmPassword" />
|
||||
</div>
|
||||
<button class="btn btn-secondary" type="submit">
|
||||
Применить
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<p>Здесь будут данные пользователя</p>
|
||||
|
Loading…
Reference in New Issue
Block a user