сделал пользователей

This commit is contained in:
Vitalick Kovalenko 2023-12-23 18:34:51 +03:00
parent a1019db433
commit 6a32bc4fa9
2 changed files with 94 additions and 26 deletions

View File

@ -22,10 +22,13 @@ public class UsersController : ControllerBase
private readonly UserManager<User> _userManager; private readonly UserManager<User> _userManager;
public UsersController(ApplicationContext applicationContext, UserManager<User> userManager) private readonly RoleManager<IdentityRole> _roleManager;
public UsersController(ApplicationContext applicationContext, UserManager<User> userManager, RoleManager<IdentityRole> roleManager)
{ {
_applicationContext = applicationContext; _applicationContext = applicationContext;
_userManager = userManager; _userManager = userManager;
_roleManager = roleManager;
} }
[HttpPost] [HttpPost]
@ -49,36 +52,85 @@ public class UsersController : ControllerBase
return BadRequest(result.Errors); return BadRequest(result.Errors);
} }
// [HttpGet("google-auth")] [HttpPut]
// public IActionResult Regiester() public async Task<IActionResult> Put([FromForm]UserPut user)
// { {
// var properties = new AuthenticationProperties{ await user.Avatar.WriteFileToDirectory();
// RedirectUri = Url.Action("GoogleResponse")
// }; var fuser = await _userManager.FindByIdAsync(user.Id);
// return Challenge(properties, GoogleDefaults.AuthenticationScheme);
// }
// [Route("google-response")] if(fuser is null)
// public async Task<IActionResult> GoogleResponse() throw new Exception("user not found");
// {
// var result = await HttpContext.AuthenticateAsync(JwtBearerDefaults.AuthenticationScheme);
// var claims = result?.Principal?.Identities.First().Claims;
// var jwt = new JwtSecurityToken( fuser.AvatarUrl = user.Avatar.FileName;
// issuer: AuthOptions.ISSUER, fuser.Fio = user.Fio;
// audience: AuthOptions.AUDIENCE, fuser.Specialities = user.Specialities;
// claims: claims, fuser.TelegramBotUrl = user.TelegramBotUrl;
// expires: DateTime.UtcNow.Add(TimeSpan.FromMinutes(2)), fuser.UserName = user.Username;
// signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256));
var result = await _userManager.UpdateAsync(fuser);
if(result.Succeeded)
return Ok(
);
return BadRequest(result.Errors);
}
[HttpPost("moderator")]
public async Task<IActionResult> PostModerator([FromForm]UserPost user)
{
await user.Avatar.WriteFileToDirectory();
var userWr = new User {
AvatarUrl = user.Avatar.FileName,
Fio = user.Fio,
Specialities = user.Specialities,
TelegramBotUrl = user.TelegramBotUrl,
UserName = user.Username
};
var result = await _userManager.CreateAsync(userWr);
if(!result.Succeeded)
return BadRequest(result.Errors);
var isExists = await _roleManager.RoleExistsAsync("модератор");
if(!isExists){
var roleResult = await _roleManager.CreateAsync(new IdentityRole("модератор"));
if(!roleResult.Succeeded)
throw new Exception("cannot create role");
}
// var strJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var addingRole = await _userManager.AddToRoleAsync(userWr, "модератор");
// return Ok(new { if(!addingRole.Succeeded)
// Token = strJwt throw new Exception("cannot create role");
// });
// }
return Ok(
new {
userWr.Id
}
);
}
[HttpGet]
public async Task<IActionResult> GetUserData(string id)
{
var user = await _userManager.FindByIdAsync(id);
if(user is null)
return BadRequest();
var role = await _userManager.GetRolesAsync(user);
return Ok(new {
user,
role
});
}
} }

View File

@ -30,6 +30,22 @@ public class UserPost
public string TelegramBotUrl { get; set; } = null!; public string TelegramBotUrl { get; set; } = null!;
} }
public class UserPut
{
public string Id { get; set; } = null!;
public IFormFile Avatar { get; set; } = null!;
public string Fio { get; set; } = null!;
public string Username { get; set; } = null!;
public string Specialities { get; set; } = null!;
public string TelegramBotUrl { get; set; } = null!;
}
public class PostMeetingDto public class PostMeetingDto
{ {
public DateTime Time { get; set; } public DateTime Time { get; set; }