Files
simapi-net/CoceSdk/CoceController.cs
T

51 lines
1.6 KiB
C#
Raw Normal View History

2025-01-17 01:30:13 +08:00
using System;
using System.Collections.Generic;
2024-08-19 03:39:35 +08:00
using System.Linq;
using Microsoft.AspNetCore.Mvc;
2025-01-17 01:30:13 +08:00
using Microsoft.Extensions.DependencyInjection;
2024-08-19 03:39:35 +08:00
using SimApi.Attributes;
using SimApi.Communications;
2025-01-17 01:30:13 +08:00
using SimApi.Controllers;
2024-08-19 03:39:35 +08:00
using SimApi.Helpers;
2025-01-17 01:30:13 +08:00
namespace SimApi.CoceSdk;
2024-08-19 03:39:35 +08:00
2025-01-17 01:30:13 +08:00
public class CoceController(CoceApp coce, SimApiAuth auth, IServiceProvider sp) : SimApiBaseController
2024-08-19 03:39:35 +08:00
{
[HttpPost]
public SimApiBaseResponse<ConfigResponse> GetConfig()
{
return new SimApiBaseResponse<ConfigResponse>(coce.GetConfig());
}
[HttpPost]
public SimApiBaseResponse<string> Login([FromBody] SimApiOneFieldRequest<string> request)
{
var data = coce.GetLevelToken(request.Data!);
ErrorWhenNull(data, 400);
coce.SaveToken(data!.UserId, data.Token);
var userinfo = coce.GetUserInfo(data!.Token);
var meta = new Dictionary<string, string>
{
{ "name", userinfo!.Name },
{ "image", userinfo.Image }
};
var groups = coce.GetUserGroups(data.Token!)!;
var loginItem = new SimApiLoginItem
{
Id = data.UserId,
Meta = meta,
};
2025-01-17 01:30:13 +08:00
var processor = sp.GetService<ICoceLoginProcessor>();
processor?.Process(loginItem, groups.ToArray());
2024-08-19 03:39:35 +08:00
return new SimApiBaseResponse<string>(auth.Login(loginItem));
}
[HttpPost, SimApiAuth]
public SimApiBaseResponse<GroupInfo[]> ListGroups()
{
var levelToken = coce.GetToken(LoginInfo.Id!);
var groups = coce.GetUserGroups(levelToken!)!;
return new SimApiBaseResponse<GroupInfo[]>(groups.ToArray());
}
}