Added Main
This commit is contained in:
96
noteApi/Controllers/AccountController.cs
Normal file
96
noteApi/Controllers/AccountController.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using noteApi.Dtos.Account;
|
||||
using noteApi.Interfaces;
|
||||
using noteApi.Models;
|
||||
|
||||
namespace noteApi.Controllers
|
||||
{
|
||||
[Route("api/account")]
|
||||
[ApiController]
|
||||
public class AccountController : ControllerBase
|
||||
{
|
||||
private readonly UserManager<AppUser> _userManager;
|
||||
private readonly ITokenService _tokenService;
|
||||
private readonly SignInManager<AppUser> _signInManager;
|
||||
public AccountController(UserManager<AppUser> userManager, ITokenService tokenService, SignInManager<AppUser> signInManager)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_tokenService = tokenService;
|
||||
_signInManager = signInManager;
|
||||
}
|
||||
|
||||
[HttpPost("register")]
|
||||
public async Task<IActionResult> Register([FromBody] RegisterDto registerDto)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(!ModelState.IsValid)
|
||||
return BadRequest(ModelState);
|
||||
|
||||
var appUser = new AppUser
|
||||
{
|
||||
UserName = registerDto.Username,
|
||||
Email = registerDto.Email
|
||||
};
|
||||
|
||||
var createUser = await _userManager.CreateAsync(appUser, registerDto.Password);
|
||||
|
||||
if (createUser.Succeeded)
|
||||
{
|
||||
var roleResult = await _userManager.AddToRoleAsync(appUser, "User");
|
||||
if (roleResult.Succeeded)
|
||||
{
|
||||
return Ok(new NewUserDto{
|
||||
UserName = appUser.UserName,
|
||||
Email = appUser.Email,
|
||||
Token = _tokenService.CreateToken(appUser)
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
return StatusCode(500, roleResult.Errors);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return StatusCode(500, createUser.Errors);
|
||||
}
|
||||
} catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, ex);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost("login")]
|
||||
public async Task<IActionResult> Login(LoginDto loginDto)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName == loginDto.Username.ToLower());
|
||||
|
||||
if(user == null)
|
||||
{
|
||||
return Unauthorized("Invalid username!");
|
||||
}
|
||||
|
||||
var result = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, false);
|
||||
|
||||
if (!result.Succeeded) return Unauthorized("Username not found and/or Password incorrect!");
|
||||
|
||||
return Ok(
|
||||
new NewUserDto
|
||||
{
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
Token = _tokenService.CreateToken(user)
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
73
noteApi/Controllers/NoteController.cs
Normal file
73
noteApi/Controllers/NoteController.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using noteApi.Data;
|
||||
using noteApi.Dtos.Note;
|
||||
using noteApi.Interfaces;
|
||||
|
||||
namespace noteApi.Controllers
|
||||
{
|
||||
[Route("api/note")]
|
||||
[ApiController]
|
||||
public class NoteController : ControllerBase
|
||||
{
|
||||
private readonly INoteRepository _noteRepo;
|
||||
public NoteController(INoteRepository noteRepository)
|
||||
{
|
||||
_noteRepo = noteRepository;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> GetAll()
|
||||
{
|
||||
var notes = await _noteRepo.GetAllAsync();
|
||||
|
||||
return Ok(notes);
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
public async Task<IActionResult> GetById([FromRoute] int id)
|
||||
{
|
||||
var note = await _noteRepo.GetByIdAsync(id);
|
||||
|
||||
if(note == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok(note);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> Create([FromBody] CreateNoteDto noteDto)
|
||||
{
|
||||
var note = await _noteRepo.CreateAsync(noteDto);
|
||||
return CreatedAtAction(nameof(GetById), new { id = note.Id }, note);
|
||||
}
|
||||
|
||||
[HttpPut("{id}")]
|
||||
public async Task<IActionResult> Update([FromRoute] int id, [FromBody] CreateNoteDto noteDto)
|
||||
{
|
||||
var note = await _noteRepo.UpdateAsync(id, noteDto);
|
||||
|
||||
if(note == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok(note);
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<IActionResult> Delete([FromRoute] int id)
|
||||
{
|
||||
var note = await _noteRepo.DeleteAsync(id);
|
||||
|
||||
if(note == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
32
noteApi/Controllers/StatusController.cs
Normal file
32
noteApi/Controllers/StatusController.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.VisualBasic;
|
||||
using noteApi.Interfaces;
|
||||
|
||||
namespace noteApi.Controllers
|
||||
{
|
||||
[Route("api/status")]
|
||||
[ApiController]
|
||||
public class StatusController : ControllerBase
|
||||
{
|
||||
public readonly INoteRepository _noteRepo;
|
||||
public StatusController(INoteRepository noteRepository)
|
||||
{
|
||||
_noteRepo = noteRepository;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Get()
|
||||
{
|
||||
try
|
||||
{
|
||||
var stock = await _noteRepo.GetAllAsync();
|
||||
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(503);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user