fix access bug

pull/152/merge
Bosn 7 years ago
parent 7147c49769
commit b415358ad1

@ -5,6 +5,7 @@ export enum ACCESS_TYPE { ORGANIZATION, REPOSITORY, USER }
export class AccessUtils { export class AccessUtils {
public static async canUserAccess(accessType: ACCESS_TYPE, curUserId: number, entityId: number): Promise<boolean> { public static async canUserAccess(accessType: ACCESS_TYPE, curUserId: number, entityId: number): Promise<boolean> {
console.log(`accessType=${accessType}&curUserId=${curUserId}&&entityId=${entityId}`)
if (accessType === ACCESS_TYPE.ORGANIZATION) { if (accessType === ACCESS_TYPE.ORGANIZATION) {
return await OrganizationService.canUserAccessOrganization(curUserId, entityId) return await OrganizationService.canUserAccessOrganization(curUserId, entityId)
} else if (accessType === ACCESS_TYPE.REPOSITORY) { } else if (accessType === ACCESS_TYPE.REPOSITORY) {

@ -5,7 +5,7 @@ import Utils from './utils';
export default class OrganizationService { export default class OrganizationService {
public static canUserAccessOrganization(userId: number, organizationId: number): Promise<boolean> { public static canUserAccessOrganization(userId: number, organizationId: number): Promise<boolean> {
const sql = ` const sql = `
SELECT COUNT(*) AS num FROM ( SELECT COUNT(id) AS num FROM (
SELECT o.id, o.name SELECT o.id, o.name
FROM Organizations o FROM Organizations o
WHERE visibility = ${1} OR creatorId = ${userId} OR ownerId = ${userId} WHERE visibility = ${1} OR creatorId = ${userId} OR ownerId = ${userId}
@ -17,6 +17,7 @@ export default class OrganizationService {
) as result ) as result
WHERE id = ${organizationId} WHERE id = ${organizationId}
` `
console.log(sql)
return new Promise(resolve => { return new Promise(resolve => {
seq.query(sql).spread((result: any) => { seq.query(sql).spread((result: any) => {
resolve(+result[0].num > 0) resolve(+result[0].num > 0)

@ -3,7 +3,8 @@ import OrganizationService from "./organization";
export default class RepositoryService { export default class RepositoryService {
public static async canUserAccessRepository(userId: number, repositoryId: number): Promise<boolean> { public static async canUserAccessRepository(userId: number, repositoryId: number): Promise<boolean> {
const repo = await Repository.findById(repositoryId, { attributes: ['organizationId']}) const repo = await Repository.findById(repositoryId)
if (repo.creatorId === userId || repo.ownerId === userId) return true
return OrganizationService.canUserAccessOrganization(userId, repo.organizationId) return OrganizationService.canUserAccessOrganization(userId, repo.organizationId)
} }
} }
Loading…
Cancel
Save