Customization of the juice shop
See original GitHub issueAs a security awareness trainer in a company I want to shock and fear my audience as much as possible. Therefore I need to customize the juice shop with the look and feel of the company I am giving the training to.
The following things need to be done:
- - Changing the name and title of the shop
- - Replacement of all occurrences of juice-sh.op with a configurable domain (so you can login for example with admin@<domain>
- - Adding of x random users
- - Creation of customized products to create a relation for the audience (make sure “Change Product Challenge” and “Christmas Special Challenge” is still working)
- - Do not display notifications of solved challenges as they destroy the flow of a story
- - Make bootstrap theme configurable for be able to pick one close to the corporate color scheme
- Make the Twitter and Facebook URLs on the /basket screen configurable
- Make the
favicon.ico
customizable (or at least removable if set to null)
I created a draft shell script which does everything described except deletion of existing products: https://github.com/wurstbrot/juice-shop/blob/master/customize.bash
In case the script suits the need for contributing, I will create a pull request. Otherwise I have the following suggestions to implement it: Configuration takes place over a json file with default values:
{
"domain": "juice-sh.op",
"companyName": "Juice Shop",
"logoUrl": "",
"numberOfFakeUsers": 100,
"challengeNotifications": true,
"products": [{
"name": "Apple Juice (1000ml)",
"description": "The all-time classic.",
"price": 1.99,
"image": "apple_juice.jpg"
}, {
"name": "Orange Juice (1000ml)",
"description": "Made from oranges hand-picked by Uncle Dittmeyer.",
"price": 2.99,
"image": "orange_juice.jpg"
}, {
"name": "Eggfruit Juice (500ml)",
"description": "Now with even more exotic flavour.",
"price": 8.99,
"image": "eggfruit_juice.jpg"
}]
}
The company name will be used from the configuration file, e.g. for title. If no logoUrl is given, it will use the default file. Otherwise on startup the logo will be downloaded and replaced on the file system. This allows the usage of the shop without internet connection.
To integrate users and products, the function createProduct in data/datacreator.js will iterate through the defined products. In case that a needed object name like image is not given, it needs to use a default one. In case the price or description is not given, a random price/name will be generated. Images for products will be downloaded on startup.
The standard users will be created as before with the given domain. Every file which contains the domain needs to use the configuration domain (e.g. tests). Extra random users will be generated with random emails and passwords.
Notifications can be hidden by adding .alert {display:none;}
to app/css/app.css
The suggestions here are to discus how I will implement it.
Issue Analytics
- State:
- Created 7 years ago
- Comments:9 (8 by maintainers)
Top GitHub Comments
@wurstbrot: A little extrawurst that might be nice: Making the Twitter and Facebook URLs on the
/basket
screen configurable?This thread has been automatically locked because it has not had recent activity after it was closed. 🔒 Please open a new issue for regressions or related bugs.