using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Identity; using zero.Web.Models; namespace zero.Web.Controllers { [ZeroAuthorize(false)] public class AuthenticationController : BackofficeController { IAuthenticationApi Api; public AuthenticationController(IAuthenticationApi api) { Api = api; } /// /// Returns the current user /// public async Task GetUser() { return await As(await Api.GetUser()); } /// /// If a user is logged in /// public IActionResult IsLoggedIn() { return Json(EntityResult.Maybe(Api.IsLoggedIn())); } /// /// Tries a login for a user with username/password /// [HttpPost] public async Task LoginUser([FromBody] LoginModel model) { EntityResult result = await Api.Login(model.Email, model.Password, model.IsPersistent); return Json(result); } /// /// Logout for the current user /// [HttpPost, ZeroAuthorize] public async Task LogoutUser() { await Api.Logout(); return Json(EntityResult.Success()); } } }