68 lines
1.7 KiB
C#
68 lines
1.7 KiB
C#
using System.Security.Claims;
|
|
using System.Text;
|
|
using JWTHelper;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace FishGameHost.Controllers;
|
|
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class PlayerController : ControllerBase
|
|
{
|
|
private readonly JwtTools _jwtTools;
|
|
|
|
public PlayerController(JwtTools jwtTools)
|
|
{
|
|
_jwtTools = jwtTools;
|
|
}
|
|
|
|
[HttpPost("login")]
|
|
public IActionResult Login([FromBody] PlayerLoginRequest request)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(request.UserId))
|
|
request.UserId = "u_" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
if (string.IsNullOrWhiteSpace(request.Nickname))
|
|
request.Nickname = "玩家";
|
|
|
|
var userIdReversed = Reverse(request.UserId);
|
|
var claims = new[]
|
|
{
|
|
new Claim("uid", userIdReversed),
|
|
new Claim("uname", request.Nickname),
|
|
};
|
|
var token = _jwtTools.CreateToken(claims);
|
|
|
|
return Ok(new
|
|
{
|
|
code = 200,
|
|
data = new
|
|
{
|
|
token,
|
|
player = new
|
|
{
|
|
userId = request.UserId,
|
|
playerId = 1,
|
|
nickname = request.Nickname,
|
|
gold = 100000L,
|
|
diamond = 1000,
|
|
playerlvl = 1,
|
|
viplvl = 0
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private static string Reverse(string s)
|
|
{
|
|
var arr = s.ToCharArray();
|
|
Array.Reverse(arr);
|
|
return new string(arr);
|
|
}
|
|
}
|
|
|
|
public class PlayerLoginRequest
|
|
{
|
|
public string? UserId { get; set; }
|
|
public string? Nickname { get; set; }
|
|
}
|