- {ordered.map(({ id, name, domain }, index) =>
- index < limit ? (
+ {ordered.map(({ id, name, domain }, index) => {
+ return index < limit ? (
- ) : null,
- )}
+ ) : null;
+ })}
);
}
diff --git a/pages/api/auth/login.ts b/pages/api/auth/login.ts
index 8494d388..d81017da 100644
--- a/pages/api/auth/login.ts
+++ b/pages/api/auth/login.ts
@@ -38,11 +38,11 @@ export default async (
if (user && checkPassword(password, user.password)) {
if (redis.enabled) {
- const key = `auth:${getRandomChars(32)}`;
+ const authKey = `auth:${getRandomChars(32)}`;
- await redis.set(key, user);
+ await redis.set(authKey, user);
- const token = createSecureToken({ key }, secret());
+ const token = createSecureToken({ authKey }, secret());
return ok(res, { token, user });
}
diff --git a/pages/api/teams/index.ts b/pages/api/teams/index.ts
index 14527898..283f27ca 100644
--- a/pages/api/teams/index.ts
+++ b/pages/api/teams/index.ts
@@ -4,7 +4,7 @@ import { canCreateTeam } from 'lib/auth';
import { uuid } from 'lib/crypto';
import { useAuth } from 'lib/middleware';
import { NextApiResponse } from 'next';
-import { methodNotAllowed, ok, unauthorized } from 'next-basics';
+import { getRandomChars, methodNotAllowed, ok, unauthorized } from 'next-basics';
import { createTeam, getUserTeams } from 'queries';
export interface TeamsRequestBody {
@@ -34,13 +34,14 @@ export default async (
const { name } = req.body;
- const created = await createTeam({
+ const team = await createTeam({
id: uuid(),
name,
userId,
+ accessCode: getRandomChars(16),
});
- return ok(res, created);
+ return ok(res, team);
}
return methodNotAllowed(res);
diff --git a/pages/api/teams/join.ts b/pages/api/teams/join.ts
new file mode 100644
index 00000000..99fa2a5c
--- /dev/null
+++ b/pages/api/teams/join.ts
@@ -0,0 +1,34 @@
+import { Team } from '@prisma/client';
+import { NextApiRequestQueryBody } from 'lib/types';
+import { useAuth } from 'lib/middleware';
+import { NextApiResponse } from 'next';
+import { methodNotAllowed, ok, notFound } from 'next-basics';
+import { createTeamUser, getTeam } from 'queries';
+import { ROLES } from 'lib/constants';
+
+export interface TeamsRequestBody {
+ accessCode: string;
+}
+
+export default async (
+ req: NextApiRequestQueryBody