All the code
This commit is contained in:
30
Gameboard.ShogiUI.Sockets/Controllers/GameController.cs
Normal file
30
Gameboard.ShogiUI.Sockets/Controllers/GameController.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using AspShogiSockets.ServiceModels.Api.Messages;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Websockets.Repositories;
|
||||
|
||||
namespace AspShogiSockets.Controllers
|
||||
{
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
public class GameController : ControllerBase
|
||||
{
|
||||
private readonly IGameboardRepository gameboardRepository;
|
||||
|
||||
public GameController(IGameboardRepository gameboardRepository)
|
||||
{
|
||||
this.gameboardRepository = gameboardRepository;
|
||||
}
|
||||
|
||||
[Route("JoinCode")]
|
||||
public async Task<IActionResult> PostGameInvitation([FromBody] PostGameInvitation request)
|
||||
{
|
||||
var userName = HttpContext.User.Claims.First(c => c.Type == "preferred_username").Value;
|
||||
var code = (await gameboardRepository.PostJoinCode(request.SessionName, userName)).JoinCode;
|
||||
return new CreatedResult("", new PostGameInvitationResponse(code));
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Gameboard.ShogiUI.Sockets/Controllers/SocketController.cs
Normal file
63
Gameboard.ShogiUI.Sockets/Controllers/SocketController.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using AspShogiSockets.Repositories.RepositoryManagers;
|
||||
using AspShogiSockets.ServiceModels.Api.Messages;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Websockets.Managers;
|
||||
using Websockets.Repositories;
|
||||
using Websockets.ServiceModels;
|
||||
|
||||
namespace Websockets.Controllers
|
||||
{
|
||||
[Authorize]
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
public class SocketController : ControllerBase
|
||||
{
|
||||
private readonly ISocketTokenManager tokenManager;
|
||||
private readonly IGameboardRepository gameboardRepository;
|
||||
private readonly IGameboardRepositoryManager gameboardManager;
|
||||
|
||||
public SocketController(
|
||||
ISocketTokenManager tokenManager,
|
||||
IGameboardRepository gameboardRepository,
|
||||
IGameboardRepositoryManager gameboardManager)
|
||||
{
|
||||
this.tokenManager = tokenManager;
|
||||
this.gameboardRepository = gameboardRepository;
|
||||
this.gameboardManager = gameboardManager;
|
||||
}
|
||||
|
||||
[Route("Token")]
|
||||
public IActionResult GetToken()
|
||||
{
|
||||
var userName = HttpContext.User.Claims.First(c => c.Type == "preferred_username").Value;
|
||||
var token = tokenManager.GenerateToken(userName);
|
||||
return new JsonResult(new GetTokenResponse(token));
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Route("GuestToken")]
|
||||
public async Task<IActionResult> GetGuestToken([FromQuery] GetGuestToken request)
|
||||
{
|
||||
if (request.ClientId == null)
|
||||
{
|
||||
var clientId = await gameboardManager.CreateGuestUser();
|
||||
var token = tokenManager.GenerateToken(clientId);
|
||||
return new JsonResult(new GetGuestTokenResponse(clientId, token));
|
||||
}
|
||||
else
|
||||
{
|
||||
var response = await gameboardRepository.GetPlayer(request.ClientId);
|
||||
if (response != null && response.Player != null)
|
||||
{
|
||||
var token = tokenManager.GenerateToken(response.Player.Name);
|
||||
return new JsonResult(new GetGuestTokenResponse(response.Player.Name, token));
|
||||
}
|
||||
}
|
||||
return new UnauthorizedResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user