about summary refs log tree commit diff
path: root/Utilities/LibMatrix.HomeserverEmulator/Controllers/HEClient/HEClientController.cs
blob: 85e4ddbc9546a785abf4405939f16e6187c5dfe8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using ArcaneLibs.Collections;
using LibMatrix.HomeserverEmulator.Services;
using LibMatrix.Responses;
using Microsoft.AspNetCore.Mvc;

namespace LibMatrix.HomeserverEmulator.Controllers;

[ApiController]
[Route("/_hse/client/v1/external_profiles")]
public class HEClientController(ILogger<HEClientController> logger, UserStore userStore, TokenService tokenService) : ControllerBase {
    [HttpGet]
    public async Task<ObservableDictionary<string, LoginResponse>> GetExternalProfiles() {
        var token = tokenService.GetAccessToken(HttpContext);
        var user = await userStore.GetUserByToken(token);

        return user.AuthorizedSessions;
    }

    [HttpPut("{name}")]
    public async Task PutExternalProfile(string name, [FromBody] LoginResponse sessionData) {
        var token = tokenService.GetAccessToken(HttpContext);
        var user = await userStore.GetUserByToken(token);

        user.AuthorizedSessions[name] = sessionData;
    }

    [HttpDelete("{name}")]
    public async Task DeleteExternalProfile(string name) {
        var token = tokenService.GetAccessToken(HttpContext);
        var user = await userStore.GetUserByToken(token);

        user.AuthorizedSessions.Remove(name);
    }
}