Added lib/password. Small tweaks.
Some checks failed
Node.js CI / build (postgresql, 18.18) (push) Has been cancelled

This commit is contained in:
Mike Cao 2025-09-13 09:40:20 -07:00
parent 9ccafc390a
commit baba06c692
6 changed files with 28 additions and 19 deletions

View file

@ -10,7 +10,7 @@ export function TeamsHeader({
allowJoin = true,
}: {
allowCreate?: boolean;
allowJoin: boolean;
allowJoin?: boolean;
}) {
const { formatMessage, labels } = useMessages();
const { user } = useLoginQuery();

View file

@ -3,7 +3,7 @@ import { Row, Column, Text } from '@umami/react-zen';
export function ActionForm({ label, description, children }) {
return (
<Row padding="6" border borderRadius="3" justifyContent="space-between" shadow="2">
<Column>
<Column gap>
<Text weight="bold">{label}</Text>
<Text>{description}</Text>
</Column>

View file

@ -40,7 +40,15 @@ export function ChangeLabel({
STYLES[good && 'positive'] || STYLES[!good && 'negative'] || STYLES[neutral && 'neutral'];
return (
<Row {...props} style={style} alignSelf="flex-start" paddingX="2" paddingY="1">
<Row
{...props}
style={style}
alignItems="center"
alignSelf="flex-start"
paddingX="2"
paddingY="1"
gap="2"
>
{!neutral && (
<Icon rotate={positive ? -90 : 90} size={size}>
<Arrow />

View file

@ -1,4 +1,3 @@
import bcrypt from 'bcryptjs';
import debug from 'debug';
import { ROLE_PERMISSIONS, ROLES, SHARE_TOKEN_HEADER } from '@/lib/constants';
import { secret } from '@/lib/crypto';
@ -9,15 +8,6 @@ import redis from '@/lib/redis';
import { getUser } from '@/queries/prisma/user';
const log = debug('umami:auth');
const SALT_ROUNDS = 10;
export function hashPassword(password: string, rounds = SALT_ROUNDS) {
return bcrypt.hashSync(password, rounds);
}
export function checkPassword(password: string, passwordHash: string) {
return bcrypt.compareSync(password, passwordHash);
}
export function getBearerToken(request: Request) {
const auth = request.headers.get('authorization');

11
src/lib/password.ts Normal file
View file

@ -0,0 +1,11 @@
import bcrypt from 'bcryptjs';
const SALT_ROUNDS = 10;
export function hashPassword(password: string, rounds = SALT_ROUNDS) {
return bcrypt.hashSync(password, rounds);
}
export function checkPassword(password: string, passwordHash: string) {
return bcrypt.compareSync(password, passwordHash);
}

View file

@ -2,11 +2,11 @@ export function ok() {
return Response.json({ ok: true });
}
export function json(data: any = {}) {
export function json(data: Record<string, any> = {}) {
return Response.json(data);
}
export function badRequest(error?: any) {
export function badRequest(error?: Record<string, any>) {
return Response.json(
{
error: { message: 'Bad request', code: 'bad-request', status: 400, ...error },
@ -15,7 +15,7 @@ export function badRequest(error?: any) {
);
}
export function unauthorized(error?: any) {
export function unauthorized(error?: Record<string, any>) {
return Response.json(
{
error: {
@ -29,21 +29,21 @@ export function unauthorized(error?: any) {
);
}
export function forbidden(error?: any) {
export function forbidden(error?: Record<string, any>) {
return Response.json(
{ error: { message: 'Forbidden', code: 'forbidden', status: 403, ...error } },
{ status: 403 },
);
}
export function notFound(error?: any) {
export function notFound(error?: Record<string, any>) {
return Response.json(
{ error: { message: 'Not found', code: 'not-found', status: 404, ...error } },
{ status: 404 },
);
}
export function serverError(error?: any) {
export function serverError(error?: Record<string, any>) {
return Response.json(
{
error: {