Skip to content

WIP #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from
Open

WIP #29

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PORT=9000
PORT=9001
NODE_ENV=dev
SECRET_KEY=qwertyuiopasdfghjklzxcvbnm123456
MONGO_URL=mongodb://localhost:27017/express-training
PASSWORD=aryan@123
PASSWORD=aryan@123
3 changes: 2 additions & 1 deletion extra/constant.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ const permissions={
delete: ['admin'],
}
};
export {permissions};

export {permissions};
45 changes: 23 additions & 22 deletions extra/index.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
import {diamond} from './patterns/index.js';
import {equilateral} from './patterns/index.js';
import {hasPermission, validateUser} from './utils/index.js';
import { diamond } from './patterns/index';
import { equilateral } from './patterns/index';
import { hasPermission, validateUser } from './utils/index';

diamond(10);
equilateral(8);
hasPermission("getUsers","trainer","write");
const user=[
{
traineeEmail: 'trainee1@successive.tech',
reviewerEmail: 'reviewer1@successive.tech'
},
{
traineeEmail: 'aryan.singhal@successive.tech',
reviewerEmail: 'rahul.sadhukhan@successive.tech'
},
{
traineeEmail: 'trainee1@gmail.com',
reviewerEmail: 'reviewer1@hotmail.com'
},
{
traineeEmail: 'Aman$2@successive.tech',
reviewerEmail: 'vinay.chaudhary@successive.tech'
}
hasPermission("getUsers", "trainer", "write");
const user = [
{
traineeEmail: 'trainee1@successive.tech',
reviewerEmail: 'reviewer1@successive.tech'
},
{
traineeEmail: 'aryan.singhal@successive.tech',
reviewerEmail: 'rahul.sadhukhan@successive.tech'
},
{
traineeEmail: 'trainee1@gmail.com',
reviewerEmail: 'reviewer1@hotmail.com'
},
{
traineeEmail: 'Aman$2@successive.tech',
reviewerEmail: 'vinay.chaudhary@successive.tech'
}
];
validateUser(user);
validateUser(user);
40 changes: 17 additions & 23 deletions extra/patterns/diamond.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,24 @@
function diamond(n)
{
for(let i=0;i<n;i++)
{
let str="";
for(let k=0;k<n-i-1;k++)
{
str=str+" ";
function diamond(n) {
for (let i = 0; i < n; i++) {
let str = '';
for (let k = 0; k < n - i - 1; k++) {
str = str + ' ';
}
for(let j=0;j<=i;j++)
{
str=str+"* ";
for (let j = 0; j <= i; j++) {
str = str + '* ';
}
console.log(str);
}
for(let i=n;i>0;i--)
{
let str="";
for(let k=0;k<n-i;k++)
{
str=str+" ";
}
for (let i = n; i > 0; i--) {
let str = '';
for (let k = 0; k < n - i; k++) {
str = str + ' ';
}
for(let j=0;j<i;j++)
{
str=str+"* ";
for (let j = 0; j < i; j++) {
str = str + '* ';
}
console.log(str);
}
}
}
export default diamond;

export default diamond;
25 changes: 11 additions & 14 deletions extra/patterns/equilateral.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
function equilateral(n)
{
for(let i=0;i<n;i++)
{
let str="";
for(let k=0;k<n-i-1;k++)
{
str=str+" ";
function equilateral(n) {
for (let i = 0; i < n; i++) {
let str = '';
for (let k = 0; k < n - i - 1; k++) {
str = str + ' ';
}
for(let j=0;j<=i;j++)
{

str=str+"* ";
for (let j = 0; j <= i; j++) {

str = str + '* ';
}
console.log(str);
}
}
}
export default equilateral;

export default equilateral;
7 changes: 4 additions & 3 deletions extra/patterns/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import diamond from "./diamond.js";
import equilateral from "./equilateral.js";
export {diamond,equilateral};
import diamond from './diamond.js';
import equilateral from './equilateral.js';

export { diamond, equilateral };
19 changes: 7 additions & 12 deletions extra/utils/helper.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
export function validateEmail(email)
{
const regex=/[a-z]([[-]*\w+[.]*){1,63}@successive[.]tech$/gmi;
if(email.match(regex))
{
return true;
}
else
{
return false;
}
export function validateEmail(email) {
const regex = /[a-z]([[-]*\w+[.]*){1,63}@successive[.]tech$/gmi;
if (email.match(regex)) {
return true;
}
return false;
}

}
6 changes: 3 additions & 3 deletions extra/utils/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import hasPermission from './permissions.js';
export {hasPermission};

import validateUser from './validation.js';
export {validateUser};

export { validateUser };
export { hasPermission };
36 changes: 16 additions & 20 deletions extra/utils/permissions.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
import {permissions} from '../constant.js';
export default function hasPermission(moduleName,role,permissionType)
{
console.log("hasPermission",moduleName,role,permissionType);
if(permissions[moduleName]===undefined)
return false;
let data=permissions[moduleName];
let tmp=false;
if(data[permissionType]===undefined)
return false;

data[permissionType].forEach(element => {
if(element==role)
{
tmp=true;
}

});
return tmp;
}
import { permissions } from '../constant.js';
export default function hasPermission(moduleName, role, permissionType) {
console.log("hasPermission", moduleName, role, permissionType);
if (permissions[moduleName] === undefined)
return false;
let data = permissions[moduleName];
let tmp = false;
if (data[permissionType] === undefined)
return false;
data[permissionType].forEach(element => {
if (element == role) {
tmp = true;
}
});
return tmp;
}
61 changes: 28 additions & 33 deletions extra/utils/validation.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,30 @@
import {validateEmail} from './helper.js';
function validateUser(user)
{
let validEmails=[];
let invalidEmails=[];
user.forEach(function(value,index)
{
const {traineeEmail,reviewerEmail}=user[index];
if(validateEmail(traineeEmail)){
validEmails.push(traineeEmail);
}
else
{
invalidEmails.push(traineeEmail);
}
if(validateEmail(reviewerEmail)){

validEmails.push(reviewerEmail);
}
else
{
invalidEmails.push(reviewerEmail);
}

});
console.log("Valid Users are:\n");
validEmails.forEach(element => console.log(element));
console.log("\nNo. of Valid Users: ",validEmails.length);
console.log("-----------------------------------------------------")
import { validateEmail } from './helper.js';

console.log("\nInvalid Users are:\n");
invalidEmails.forEach(element => console.log(element));
console.log("\nNo. of Invalid Users: ",invalidEmails.length);
function validateUser(user) {
let validEmails = [];
let invalidEmails = [];
user.forEach(function (value) {
const { traineeEmail, reviewerEmail } = value;
if (validateEmail(traineeEmail)) {
validEmails.push(traineeEmail);
}
else {
invalidEmails.push(traineeEmail);
}
if (validateEmail(reviewerEmail)) {
validEmails.push(reviewerEmail);
}
else {
invalidEmails.push(reviewerEmail);
}
});
console.log("Valid Users are:\n");
validEmails.forEach(element => console.log(element));
console.log("\nNo. of Valid Users: ", validEmails.length);
console.log("-----------------------------------------------------")
console.log("\nInvalid Users are:\n");
invalidEmails.forEach(element => console.log(element));
console.log("\nNo. of Invalid Users: ", invalidEmails.length);
}
export default validateUser;

export default validateUser;
5 changes: 4 additions & 1 deletion extraTs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import { diamond } from './patterns/index';
import { equilateral } from './patterns/index';
import { hasPermission, validateUser } from './utils/index';
import { Iuser } from './interface';

diamond(10);
equilateral(8);
hasPermission('getUsers', 'trainer', 'write');

const user: Iuser[] = [
{
traineeEmail: 'trainee1@successive.tech',
Expand All @@ -23,4 +25,5 @@ const user: Iuser[] = [
reviewerEmail: 'vinay.chaudhary@successive.tech'
}
];
validateUser(user);

validateUser(user);
6 changes: 4 additions & 2 deletions extraTs/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ interface Iuser {
traineeEmail: string;
reviewerEmail: string;
}
export { Iuser };

interface Iauthority {
all: string[];
read: string[];
write: string[];
delete: string[];
}

interface Ipermission {
[key: string]: Iauthority;
}
export { Ipermission };

export { Ipermission, Iuser };
29 changes: 15 additions & 14 deletions extraTs/utils/permissions.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
import { permissions } from '../constant.js';

export default function hasPermission(moduleName: string, role: string, permissionType: string): boolean {
console.log('hasPermission', moduleName, role, permissionType);
if (permissions[moduleName] === undefined)
return false;
const data = permissions[moduleName];
let tmp: boolean = false;
if (data[permissionType] === undefined)
return false;
console.log('hasPermission', moduleName, role, permissionType);
if (permissions[moduleName] === undefined || permissions[moduleName] === null)
return false;
const data = permissions[moduleName];
let tmp: boolean = false;
if (data[permissionType] === undefined || data[permissionType] === null)
return false;

data[permissionType].forEach(element => {
if (element === role) {
tmp = true;
}
data[permissionType].forEach(element => {
if (element === role) {
tmp = true;
}

});
return tmp;
}
});
return tmp;
}
9 changes: 4 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,9 @@
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "7.8.3",
"@babel/node": "7.8.3",
"@babel/preset-env": "7.8.3",
"@types/express": "4.17.2",
"@types/mongoose": "5.7.0",
"@types/node": "13.5.1",
"babel": "6.23.0",
"babel-node": "0.0.1-security",
"bcrypt": "^3.0.8",
"body-parser": "1.19.0",
Expand All @@ -47,7 +43,10 @@
"tslint": "6.0.0"
},
"devDependencies": {
"@babel/core": "7.8.3",
"@babel/node": "7.8.3",
"@babel/preset-env": "7.8.3",
"tsc-watch": "4.1.0",
"typescript": "3.7.5"
}
}
}
Loading