Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0b6587eee | ||
|
|
e29c9e6dda | ||
|
|
caf9602557 | ||
|
|
445b0fc682 |
@@ -0,0 +1,42 @@
|
|||||||
|
name: Build and push Docker image
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [created]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push-docker-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set version
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
id: set-version
|
||||||
|
with:
|
||||||
|
result-encoding: string
|
||||||
|
script: return context.payload.release.tag_name.replace('v', '')
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/plankanban/planka:latest
|
||||||
|
ghcr.io/plankanban/planka:${{ steps.set-version.outputs.result }}
|
||||||
+1
-1
@@ -2,7 +2,7 @@ version: '3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
planka:
|
planka:
|
||||||
image: meltyshev/planka:latest
|
image: ghcr.io/plankanban/planka:latest
|
||||||
command: >
|
command: >
|
||||||
bash -c
|
bash -c
|
||||||
"for i in `seq 1 30`; do
|
"for i in `seq 1 30`; do
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "planka",
|
"name": "planka",
|
||||||
"version": "1.0.0",
|
"version": "1.1.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"homepage": "https://plankanban.github.io/planka",
|
"homepage": "https://plankanban.github.io/planka",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -61,7 +61,9 @@ module.exports = {
|
|||||||
throw Errors.ATTACHMENT_NOT_FOUND;
|
throw Errors.ATTACHMENT_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.res.setHeader('Content-Disposition', `inline; ${inputs.filename}`);
|
this.res.type(attachment.filename);
|
||||||
|
this.res.set('Cache-Control', 'private, max-age=900'); // TODO: move to config
|
||||||
|
|
||||||
return exits.success(fs.createReadStream(filePath));
|
return exits.success(fs.createReadStream(filePath));
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,10 +14,6 @@ module.exports = {
|
|||||||
regex: /^[0-9]+$/,
|
regex: /^[0-9]+$/,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
filename: {
|
|
||||||
type: 'string',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
exits: {
|
exits: {
|
||||||
@@ -56,14 +52,12 @@ module.exports = {
|
|||||||
throw Errors.ATTACHMENT_NOT_FOUND;
|
throw Errors.ATTACHMENT_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
let contentDisposition;
|
this.res.type(attachment.filename);
|
||||||
if (attachment.isImage || path.extname(attachment.filename) === '.pdf') {
|
if (!attachment.isImage && path.extname(attachment.filename) !== '.pdf') {
|
||||||
contentDisposition = 'inline';
|
this.res.set('Content-Disposition', 'attachment');
|
||||||
} else {
|
|
||||||
contentDisposition = `attachment; ${inputs.filename}`;
|
|
||||||
}
|
}
|
||||||
|
this.res.set('Cache-Control', 'private, max-age=900'); // TODO: move to config
|
||||||
|
|
||||||
this.res.setHeader('Content-Disposition', contentDisposition);
|
|
||||||
return exits.success(fs.createReadStream(filePath));
|
return exits.success(fs.createReadStream(filePath));
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,25 +3,36 @@ module.exports = {
|
|||||||
const { currentUser } = this.req;
|
const { currentUser } = this.req;
|
||||||
|
|
||||||
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id);
|
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id);
|
||||||
|
const managerProjects = await sails.helpers.projects.getMany(managerProjectIds);
|
||||||
|
|
||||||
const boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
|
let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
|
||||||
const membershipBoardIds = await sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
|
|
||||||
|
|
||||||
const membershipBoards = await sails.helpers.boards.getMany({
|
let membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
|
||||||
|
|
||||||
|
let membershipBoards = await sails.helpers.boards.getMany({
|
||||||
id: membershipBoardIds,
|
id: membershipBoardIds,
|
||||||
projectId: {
|
projectId: {
|
||||||
'!=': managerProjectIds,
|
'!=': managerProjectIds,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const membershipProjectIds = sails.helpers.utils.mapRecords(
|
let membershipProjectIds = sails.helpers.utils.mapRecords(membershipBoards, 'projectId', true);
|
||||||
membershipBoards,
|
const membershipProjects = await sails.helpers.projects.getMany(membershipProjectIds);
|
||||||
'projectId',
|
|
||||||
true,
|
membershipProjectIds = sails.helpers.utils.mapRecords(membershipProjects);
|
||||||
|
|
||||||
|
membershipBoards = membershipBoards.filter((membershipBoard) =>
|
||||||
|
membershipProjectIds.includes(membershipBoard.projectId),
|
||||||
|
);
|
||||||
|
|
||||||
|
membershipBoardIds = sails.helpers.utils.mapRecords(membershipBoards);
|
||||||
|
|
||||||
|
boardMemberships = boardMemberships.filter((boardMembership) =>
|
||||||
|
membershipBoardIds.includes(boardMembership.boardId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const projectIds = [...managerProjectIds, ...membershipProjectIds];
|
const projectIds = [...managerProjectIds, ...membershipProjectIds];
|
||||||
const projects = await sails.helpers.projects.getMany(projectIds);
|
const projects = [...managerProjects, ...membershipProjects];
|
||||||
|
|
||||||
const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds);
|
const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds);
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,6 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async fn(inputs) {
|
async fn(inputs) {
|
||||||
const boardIds = await sails.helpers.projects.getBoardIds(inputs.record.id);
|
|
||||||
|
|
||||||
await BoardMembership.destroy({
|
|
||||||
boardId: boardIds,
|
|
||||||
}).fetch();
|
|
||||||
|
|
||||||
const projectManagers = await ProjectManager.destroy({
|
const projectManagers = await ProjectManager.destroy({
|
||||||
projectId: inputs.record.id,
|
projectId: inputs.record.id,
|
||||||
}).fetch();
|
}).fetch();
|
||||||
@@ -25,14 +19,14 @@ module.exports = {
|
|||||||
if (project) {
|
if (project) {
|
||||||
const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId');
|
const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId');
|
||||||
|
|
||||||
|
const boardIds = await sails.helpers.projects.getBoardIds(project.id);
|
||||||
|
const boardRooms = boardIds.map((boardId) => `board:${boardId}`);
|
||||||
|
|
||||||
const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds);
|
const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds);
|
||||||
const userIds = _.union(managerUserIds, memberUserIds);
|
const userIds = _.union(managerUserIds, memberUserIds);
|
||||||
|
|
||||||
userIds.forEach((userId) => {
|
userIds.forEach((userId) => {
|
||||||
sails.sockets.removeRoomMembersFromRooms(
|
sails.sockets.removeRoomMembersFromRooms(`user:${userId}`, boardRooms);
|
||||||
`user:${userId}`,
|
|
||||||
boardIds.map((boardId) => `board:${boardId}`),
|
|
||||||
);
|
|
||||||
|
|
||||||
sails.sockets.broadcast(
|
sails.sockets.broadcast(
|
||||||
`user:${userId}`,
|
`user:${userId}`,
|
||||||
|
|||||||
Reference in New Issue
Block a user