mirror of
https://github.com/Gimanh/taskview-community.git
synced 2026-09-11 21:38:56 +00:00
Merge pull request #44 from Gimanh/chore/version-1-40
chore: new version 1.41
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "taskview-ce-api-server",
|
||||
"version": "1.32.0",
|
||||
"version": "1.41.0",
|
||||
"scripts": {
|
||||
"dev": "bun run --watch ./server.ts",
|
||||
"start": "NODE_ENV=production node ./dist/taskview-server.js",
|
||||
|
||||
@@ -118,7 +118,6 @@ export default class AuthController {
|
||||
|
||||
const code = this.generateLoginCode();
|
||||
|
||||
$logger.info(data.data, `[AuthController:sendLoginCode] we got data for send login code`);
|
||||
|
||||
let userData = await req.appUser.authManager.repository.getUserByLogin(email, isEmail(email));
|
||||
|
||||
@@ -129,8 +128,6 @@ export default class AuthController {
|
||||
}
|
||||
|
||||
if (!userData) {
|
||||
$logger.info(`[AuthController:sendLoginCode] trying to register user ${email}`);
|
||||
|
||||
const password = this.makeidLogin(7),
|
||||
login = this.makeidLogin(7);
|
||||
|
||||
@@ -142,17 +139,17 @@ export default class AuthController {
|
||||
confirmEmailCode: '',
|
||||
});
|
||||
if (!id) {
|
||||
$logger.error(`Can not register user ${email}`);
|
||||
$logger.error(`Can not register user`);
|
||||
return res.status(500).end();
|
||||
}
|
||||
|
||||
$logger.info(`[AuthController:sendLoginCode] user registered ${email}`);
|
||||
$logger.info(`[AuthController:sendLoginCode] user registered`);
|
||||
}
|
||||
|
||||
userData = await req.appUser.authManager.repository.getUserByLogin(email, isEmail(email));
|
||||
|
||||
if (!userData) {
|
||||
$logger.error(`Can not fetch user after registration by code ${email}`);
|
||||
$logger.error(`Can not fetch user after registration by code`);
|
||||
return res.status(500).end();
|
||||
}
|
||||
|
||||
@@ -160,11 +157,11 @@ export default class AuthController {
|
||||
const now = Date.now();
|
||||
|
||||
if (!lastUpdate || (lastUpdate && now - +lastUpdate > 60 * 1000)) {
|
||||
$logger.info(`[AuthController:sendLoginCode] updating login code for user ${email}`);
|
||||
$logger.info(`[AuthController:sendLoginCode] updating login code for user`);
|
||||
|
||||
await req.appUser.authManager.repository.updateLoginCode(code, email);
|
||||
|
||||
$logger.info(`[AuthController:sendLoginCode] sending code by email to ${email}`);
|
||||
$logger.info(`[AuthController:sendLoginCode] sending code by email to`);
|
||||
|
||||
await this.sendCodeByEmail(code.split(':')[0], email);
|
||||
}
|
||||
@@ -206,8 +203,8 @@ export default class AuthController {
|
||||
});
|
||||
|
||||
if (!id) {
|
||||
$logger.error(`Can not register user ${user.email} & login ${login}`);
|
||||
return res.status(500).send(`Can not register user ${user.email} & login ${login}`);
|
||||
$logger.error(`Can not register user`);
|
||||
return res.status(500).send(`Can not register user`);
|
||||
}
|
||||
|
||||
userData = await req.appUser.authManager.repository.getUserByLogin(
|
||||
@@ -217,7 +214,7 @@ export default class AuthController {
|
||||
}
|
||||
|
||||
if (!userData) {
|
||||
$logger.error(`Can not find user ${user.email} after registration`);
|
||||
$logger.error(`Can not find user after registration`);
|
||||
return res.status(500).send(`Can not find user ${user.email} after registration`);
|
||||
}
|
||||
|
||||
@@ -226,7 +223,7 @@ export default class AuthController {
|
||||
const result = await req.appUser.authManager.repository.updateLoginCode(code, userData.email);
|
||||
|
||||
if (!result) {
|
||||
$logger.error(`Can not update login code for user ${userData.email}`);
|
||||
$logger.error(`Can not update login code for user`);
|
||||
return res.status(500).send(`Can not update login code for user`);
|
||||
}
|
||||
|
||||
@@ -352,7 +349,6 @@ export default class AuthController {
|
||||
const userData = await req.appUser.authManager.repository.getUserByLogin(login, isEmail(login));
|
||||
|
||||
if (!userData) {
|
||||
$logger.info(`Can not find user with login ${login}`);
|
||||
return res.status(400).end();
|
||||
}
|
||||
|
||||
@@ -512,7 +508,7 @@ export default class AuthController {
|
||||
const result = await req.appUser.authManager.repository.setReminderCodeAndTime(userData.email, code, seconds);
|
||||
|
||||
if (!result) {
|
||||
$logger.error(`Can not set remind_code and time for user ${userData.email}`);
|
||||
$logger.error(`Can not set remind_code and time for user`);
|
||||
return res.status(500).send();
|
||||
}
|
||||
|
||||
@@ -562,8 +558,6 @@ export default class AuthController {
|
||||
|
||||
const passwordHash = hashSync(parsedData.data.password, 10);
|
||||
|
||||
$logger.debug(`Update ${passwordHash} for ${userData.id}`);
|
||||
|
||||
const result = await req.appUser.authManager.repository.updateUserPassword(passwordHash, userData.id);
|
||||
|
||||
$logger.debug(`Update result ${result}`);
|
||||
@@ -619,7 +613,6 @@ export default class AuthController {
|
||||
|
||||
const isActive = await req.appUser.authManager.sessionStorage.isSessionActive(payload.id);
|
||||
if (!isActive) {
|
||||
$logger.info({ sessionId: payload.id }, 'Session not active during refresh');
|
||||
this.clearRefreshToken(res);
|
||||
return res.status(401).end();
|
||||
}
|
||||
@@ -650,12 +643,12 @@ export default class AuthController {
|
||||
});
|
||||
|
||||
if (!sendResult) {
|
||||
$logger.error(`Can not send account deletion code for user ${userId}`);
|
||||
$logger.error(`Can not send account deletion code for user`);
|
||||
}
|
||||
const insertCode = await req.appUser.authManager.repository.addDeleteAccountCode(code, userId);
|
||||
|
||||
if (!insertCode) {
|
||||
$logger.error(`Can not insert account deletion code for user ${userId}`);
|
||||
$logger.error(`Can not insert account deletion code for user`);
|
||||
return res.status(500).end();
|
||||
}
|
||||
return res.status(200).end();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { UAParser } from 'ua-parser-js';
|
||||
import { $logger } from '../modules/logget';
|
||||
|
||||
export function isEmail(email: string): boolean {
|
||||
@@ -44,10 +45,8 @@ export async function callWithCatch<T>(func: () => Promise<T>): Promise<T | null
|
||||
|
||||
export function parseDeviceName(userAgent: string | undefined): string {
|
||||
if (!userAgent) return 'Unknown'
|
||||
// ua-parser-js v2 exports a function, not a class
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const UAParser: (ua: string) => { browser: { name?: string; version?: string }; os: { name?: string }; device: { model?: string } } = require('ua-parser-js')
|
||||
const result = UAParser(userAgent)
|
||||
const parser = new UAParser(userAgent)
|
||||
const result = parser.getResult()
|
||||
|
||||
const parts: string[] = []
|
||||
if (result.browser.name) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "taskview-ce-monorepo",
|
||||
"version": "1.32.0",
|
||||
"version": "1.41.0",
|
||||
"private": true,
|
||||
"description": "TaskView CE monorepo containing web, API, and packages",
|
||||
"workspaces": [
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "web-nuxt-ui",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "1.32.0",
|
||||
"version": "1.41.0",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build:packages": "pnpm --filter taskview-db-schemas build && pnpm --filter taskview-api build",
|
||||
|
||||
@@ -20,32 +20,30 @@ export const useBaseScreenStore = defineStore('base-screen-store', {
|
||||
return new Map(state.lists.map((item) => [item.listId, { name: item.listName, goalId: item.goalId }]))
|
||||
},
|
||||
},
|
||||
state(): BaseScreenState {
|
||||
return {
|
||||
activeWidgetInMobile: 'today',
|
||||
wasCalled: false,
|
||||
tasks: [], //all tasks in the app
|
||||
tasksToday: [],
|
||||
tasksUpcoming: [],
|
||||
tasksLastCompleted: [],
|
||||
//todo rename "users" to "usersByProject"
|
||||
users: [], //show users by project
|
||||
searchTask: '',
|
||||
// addTaskDialog: false,//shoud we offer add goals
|
||||
lists: [],
|
||||
// listToGoal: {},
|
||||
loading: false,
|
||||
//todo rename "assignees" to "assigneesByTask"
|
||||
assignees: [],
|
||||
filterAndSorting: {
|
||||
sort: 'new',
|
||||
filters: {
|
||||
...FILTER_DEFAULT,
|
||||
},
|
||||
state: (): BaseScreenState => ({
|
||||
activeWidgetInMobile: 'today',
|
||||
wasCalled: false,
|
||||
tasks: [], //all tasks in the app
|
||||
tasksToday: [],
|
||||
tasksUpcoming: [],
|
||||
tasksLastCompleted: [],
|
||||
//todo rename "users" to "usersByProject"
|
||||
users: [], //show users by project
|
||||
searchTask: '',
|
||||
// addTaskDialog: false,//shoud we offer add goals
|
||||
lists: [],
|
||||
// listToGoal: {},
|
||||
loading: false,
|
||||
//todo rename "assignees" to "assigneesByTask"
|
||||
assignees: [],
|
||||
filterAndSorting: {
|
||||
sort: 'new',
|
||||
filters: {
|
||||
...FILTER_DEFAULT,
|
||||
},
|
||||
taskIdToUser: {},
|
||||
}
|
||||
},
|
||||
},
|
||||
taskIdToUser: {},
|
||||
}),
|
||||
actions: {
|
||||
async fetchAllState() {
|
||||
this.taskIdToUser = {}
|
||||
@@ -106,18 +104,18 @@ export const useBaseScreenStore = defineStore('base-screen-store', {
|
||||
localTask.complete = task.complete
|
||||
|
||||
switch (prop) {
|
||||
case 'tasks':
|
||||
this.processLastAdded(task)
|
||||
break
|
||||
case 'tasksToday':
|
||||
this.processToday(task)
|
||||
break
|
||||
case 'tasksUpcoming':
|
||||
this.processUpcoming(task)
|
||||
break
|
||||
case 'tasksLastCompleted':
|
||||
this.processLastCompleted(task)
|
||||
break
|
||||
case 'tasks':
|
||||
this.processLastAdded(task)
|
||||
break
|
||||
case 'tasksToday':
|
||||
this.processToday(task)
|
||||
break
|
||||
case 'tasksUpcoming':
|
||||
this.processUpcoming(task)
|
||||
break
|
||||
case 'tasksLastCompleted':
|
||||
this.processLastCompleted(task)
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user