feat(backend): return settings in GET /users/@me
This commit is contained in:
parent
3527acb8ba
commit
22be49976a
4 changed files with 18 additions and 12 deletions
|
@ -46,7 +46,15 @@ public class UsersController(
|
||||||
{
|
{
|
||||||
User user = await db.ResolveUserAsync(userRef, CurrentToken, ct);
|
User user = await db.ResolveUserAsync(userRef, CurrentToken, ct);
|
||||||
return Ok(
|
return Ok(
|
||||||
await userRenderer.RenderUserAsync(user, CurrentUser, CurrentToken, true, true, ct: ct)
|
await userRenderer.RenderUserAsync(
|
||||||
|
user,
|
||||||
|
CurrentUser,
|
||||||
|
CurrentToken,
|
||||||
|
renderMembers: true,
|
||||||
|
renderAuthMethods: true,
|
||||||
|
renderSettings: true,
|
||||||
|
ct: ct
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,15 +269,6 @@ public class UsersController(
|
||||||
return Ok(user.CustomPreferences);
|
return Ok(user.CustomPreferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("@me/settings")]
|
|
||||||
[Authorize("user.read_hidden")]
|
|
||||||
[ProducesResponseType<UserSettings>(statusCode: StatusCodes.Status200OK)]
|
|
||||||
public async Task<IActionResult> GetUserSettingsAsync(CancellationToken ct = default)
|
|
||||||
{
|
|
||||||
User user = await db.Users.FirstAsync(u => u.Id == CurrentUser!.Id, ct);
|
|
||||||
return Ok(user.Settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPatch("@me/settings")]
|
[HttpPatch("@me/settings")]
|
||||||
[Authorize("user.read_hidden", "user.update")]
|
[Authorize("user.read_hidden", "user.update")]
|
||||||
[ProducesResponseType<UserSettings>(statusCode: StatusCodes.Status200OK)]
|
[ProducesResponseType<UserSettings>(statusCode: StatusCodes.Status200OK)]
|
||||||
|
|
|
@ -49,7 +49,8 @@ public record UserResponse(
|
||||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] Instant? LastSidReroll,
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] Instant? LastSidReroll,
|
||||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] string? Timezone,
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] string? Timezone,
|
||||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] bool? Suspended,
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] bool? Suspended,
|
||||||
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] bool? Deleted
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] bool? Deleted,
|
||||||
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] UserSettings? Settings
|
||||||
);
|
);
|
||||||
|
|
||||||
public record CustomPreferenceResponse(
|
public record CustomPreferenceResponse(
|
||||||
|
|
|
@ -33,6 +33,7 @@ public class UserRendererService(
|
||||||
bool renderMembers = true,
|
bool renderMembers = true,
|
||||||
bool renderAuthMethods = false,
|
bool renderAuthMethods = false,
|
||||||
string? overrideSid = null,
|
string? overrideSid = null,
|
||||||
|
bool renderSettings = false,
|
||||||
CancellationToken ct = default
|
CancellationToken ct = default
|
||||||
) =>
|
) =>
|
||||||
await RenderUserInnerAsync(
|
await RenderUserInnerAsync(
|
||||||
|
@ -42,6 +43,7 @@ public class UserRendererService(
|
||||||
renderMembers,
|
renderMembers,
|
||||||
renderAuthMethods,
|
renderAuthMethods,
|
||||||
overrideSid,
|
overrideSid,
|
||||||
|
renderSettings,
|
||||||
ct
|
ct
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -52,6 +54,7 @@ public class UserRendererService(
|
||||||
bool renderMembers = true,
|
bool renderMembers = true,
|
||||||
bool renderAuthMethods = false,
|
bool renderAuthMethods = false,
|
||||||
string? overrideSid = null,
|
string? overrideSid = null,
|
||||||
|
bool renderSettings = false,
|
||||||
CancellationToken ct = default
|
CancellationToken ct = default
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -62,6 +65,7 @@ public class UserRendererService(
|
||||||
|
|
||||||
renderMembers = renderMembers && (!user.ListHidden || tokenCanReadHiddenMembers);
|
renderMembers = renderMembers && (!user.ListHidden || tokenCanReadHiddenMembers);
|
||||||
renderAuthMethods = renderAuthMethods && tokenPrivileged;
|
renderAuthMethods = renderAuthMethods && tokenPrivileged;
|
||||||
|
renderSettings = renderSettings && tokenHidden;
|
||||||
|
|
||||||
IEnumerable<Member> members = renderMembers
|
IEnumerable<Member> members = renderMembers
|
||||||
? await db.Members.Where(m => m.UserId == user.Id).OrderBy(m => m.Name).ToListAsync(ct)
|
? await db.Members.Where(m => m.UserId == user.Id).OrderBy(m => m.Name).ToListAsync(ct)
|
||||||
|
@ -117,7 +121,8 @@ public class UserRendererService(
|
||||||
tokenHidden ? user.LastSidReroll : null,
|
tokenHidden ? user.LastSidReroll : null,
|
||||||
tokenHidden ? user.Timezone ?? "<none>" : null,
|
tokenHidden ? user.Timezone ?? "<none>" : null,
|
||||||
tokenHidden ? user is { Deleted: true, DeletedBy: not null } : null,
|
tokenHidden ? user is { Deleted: true, DeletedBy: not null } : null,
|
||||||
tokenHidden ? user.Deleted : null
|
tokenHidden ? user.Deleted : null,
|
||||||
|
renderSettings ? user.Settings : null
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ export type MeUser = UserWithMembers & {
|
||||||
timezone: string;
|
timezone: string;
|
||||||
suspended: boolean;
|
suspended: boolean;
|
||||||
deleted: boolean;
|
deleted: boolean;
|
||||||
|
settings: UserSettings;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type UserWithMembers = User & { members: PartialMember[] | null };
|
export type UserWithMembers = User & { members: PartialMember[] | null };
|
||||||
|
|
Loading…
Add table
Reference in a new issue