mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: show audit logs for forgot password flow (#15181)
Fixes https://github.com/coder/coder/issues/15150 Audit logs for requesting a password reset, and a user updating their password, now show up in the audit log.
This commit is contained in:
Generated
+2
-2
@@ -2098,8 +2098,8 @@ export type AgentSubsystem = "envbox" | "envbuilder" | "exectrace"
|
||||
export const AgentSubsystems: AgentSubsystem[] = ["envbox", "envbuilder", "exectrace"]
|
||||
|
||||
// From codersdk/audit.go
|
||||
export type AuditAction = "create" | "delete" | "login" | "logout" | "register" | "start" | "stop" | "write"
|
||||
export const AuditActions: AuditAction[] = ["create", "delete", "login", "logout", "register", "start", "stop", "write"]
|
||||
export type AuditAction = "create" | "delete" | "login" | "logout" | "register" | "request_password_reset" | "start" | "stop" | "write"
|
||||
export const AuditActions: AuditAction[] = ["create", "delete", "login", "logout", "register", "request_password_reset", "start", "stop", "write"]
|
||||
|
||||
// From codersdk/workspaces.go
|
||||
export type AutomaticUpdates = "always" | "never"
|
||||
|
||||
+7
@@ -1,6 +1,7 @@
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import {
|
||||
MockAuditLog,
|
||||
MockAuditLogRequestPasswordReset,
|
||||
MockAuditLogSuccessfulLogin,
|
||||
MockAuditLogUnsuccessfulLoginKnownUser,
|
||||
MockAuditLogWithWorkspaceBuild,
|
||||
@@ -57,6 +58,12 @@ export const UnsuccessfulLoginForUnknownUser: Story = {
|
||||
},
|
||||
};
|
||||
|
||||
export const RequestPasswordReset: Story = {
|
||||
args: {
|
||||
auditLog: MockAuditLogRequestPasswordReset,
|
||||
},
|
||||
};
|
||||
|
||||
export const CreateUser: Story = {
|
||||
args: {
|
||||
auditLog: {
|
||||
|
||||
@@ -9,6 +9,14 @@ const getDiffValue = (value: unknown): string => {
|
||||
return `"${value}"`;
|
||||
}
|
||||
|
||||
if (isTimeObject(value)) {
|
||||
if (!value.Valid) {
|
||||
return "null";
|
||||
}
|
||||
|
||||
return new Date(value.Time).toLocaleString();
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
const values = value.map((v) => getDiffValue(v));
|
||||
return `[${values.join(", ")}]`;
|
||||
@@ -21,6 +29,19 @@ const getDiffValue = (value: unknown): string => {
|
||||
return String(value);
|
||||
};
|
||||
|
||||
const isTimeObject = (
|
||||
value: unknown,
|
||||
): value is { Time: string; Valid: boolean } => {
|
||||
return (
|
||||
value !== null &&
|
||||
typeof value === "object" &&
|
||||
"Time" in value &&
|
||||
typeof value.Time === "string" &&
|
||||
"Valid" in value &&
|
||||
typeof value.Valid === "boolean"
|
||||
);
|
||||
};
|
||||
|
||||
interface AuditLogDiffProps {
|
||||
diff: AuditDiff;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
MockAuditLog,
|
||||
MockAuditLog2,
|
||||
MockAuditLogGitSSH,
|
||||
MockAuditLogRequestPasswordReset,
|
||||
MockAuditLogWithDeletedResource,
|
||||
MockAuditLogWithWorkspaceBuild,
|
||||
MockUser,
|
||||
@@ -122,6 +123,12 @@ export const WithOrganization: Story = {
|
||||
},
|
||||
};
|
||||
|
||||
export const WithDateDiffValue: Story = {
|
||||
args: {
|
||||
auditLog: MockAuditLogRequestPasswordReset,
|
||||
},
|
||||
};
|
||||
|
||||
export const NoUserAgent: Story = {
|
||||
args: {
|
||||
auditLog: {
|
||||
|
||||
@@ -2600,6 +2600,32 @@ export const MockAuditLogUnsuccessfulLoginKnownUser: TypesGen.AuditLog = {
|
||||
status_code: 401,
|
||||
};
|
||||
|
||||
export const MockAuditLogRequestPasswordReset: TypesGen.AuditLog = {
|
||||
...MockAuditLog,
|
||||
resource_type: "user",
|
||||
resource_target: "member",
|
||||
action: "request_password_reset",
|
||||
description: "password reset requested for {target}",
|
||||
diff: {
|
||||
hashed_password: {
|
||||
old: "",
|
||||
new: "",
|
||||
secret: true,
|
||||
},
|
||||
one_time_passcode_expires_at: {
|
||||
old: {
|
||||
Time: "0001-01-01T00:00:00Z",
|
||||
Valid: false,
|
||||
},
|
||||
new: {
|
||||
Time: "2024-10-22T09:03:23.961702Z",
|
||||
Valid: true,
|
||||
},
|
||||
secret: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const MockWorkspaceQuota: TypesGen.WorkspaceQuota = {
|
||||
credits_consumed: 0,
|
||||
budget: 100,
|
||||
|
||||
Reference in New Issue
Block a user