using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using zero.Core; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Identity; using zero.Core.Renderer; using zero.TestData; using zero.TestData.Lists; namespace zero.Web.Controllers { //[ZeroAuthorize("tobi")] public class TestController : BackofficeController { private IAuthenticationApi Api { get; set; } private ISpacesApi SpacesApi { get; set; } private ILanguagesApi LanguagesApi { get; set; } private SignInManager SignInManager; private ZeroOptions Options; public TestController(IZeroConfiguration config, IAuthenticationApi api, ISpacesApi spacesApi, ILanguagesApi languagesApi, SignInManager signInManager, IOptionsMonitor options) : base(config) { Api = api; SpacesApi = spacesApi; LanguagesApi = languagesApi; SignInManager = signInManager; Options = options.CurrentValue; } [HttpGet] [ZeroAuthorize(false)] public IActionResult RenderConfig() { SocialContentRenderer renderer = new SocialContentRenderer(); return Json(renderer.Build()); } [HttpGet] [ZeroAuthorize(false)] public async Task SaveSpaceContent() { TeamMember model = new TeamMember() { IsActive = true, Email = "tobi@test.com", Name = "Tobi", Position = "Chef", VideoUri = "https://swcs.pro" }; model.Addresses.Add(new TeamMemberAddress() { City = "Braunau", Street = "My street", No = "23" }); return Json(await SpacesApi.Save("team", model)); } [HttpGet] [ZeroAuthorize(false)] public async Task AddLanguage() { return Json(await LanguagesApi.Save(new Language() { IsActive = true, Name = "English", Code = "en-US", IsDefault = true })); } [HttpGet] [ZeroAuthorize(false)] public async Task GetSpaceList() { return Json(await SpacesApi.GetList("team")); } [HttpGet] [ZeroAuthorize(false)] public IActionResult GetRenderer([FromQuery] string alias) { Space space = SpacesApi.GetByAlias(alias); AbstractGenericRenderer renderer = Options.Renderers.FirstOrDefault(x => x.TargetType == space.Type); if (renderer == null) { return NotFound(); } return Json(renderer.Build()); } [HttpPost] public async Task Login([FromQuery] string username, [FromQuery] string password) { Microsoft.AspNetCore.Identity.SignInResult result = await SignInManager.PasswordSignInAsync(username, password, false, true); return Json(new { username, password, result }); } [ZeroAuthorize] public async Task GetUser() { User user = await SignInManager.UserManager.GetUserAsync(HttpContext.User); return Json(new { user }); } [ZeroAuthorize] public IActionResult GetUserClaims() { return Json(HttpContext.User.Claims.Select(claim => new { claim.Type, claim.Value }).ToArray()); } [HttpPost] public async Task Logout() { await SignInManager.SignOutAsync(); return Json(new { success = true }); } } }