const express = require('express'); const jwt = require('jsonwebtoken'); const bcrypt = require('bcryptjs'); const { check, validationResult } = require('express-validator'); const router = express.Router(); // User Model const User = require('./models/User'); // Register Route for Studio Owners router.post( '/register', [ check('email', 'Please include a valid email').isEmail(), check('password', 'Password is required').exists(), ], async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } const { email, password, role } = req.body; try { let user = await User.findOne({ email }); if (user) { return res.status(400).json({ msg: 'User already exists' }); } user = new User({ email, password, role, // "Studio Owner", "Judge", etc. }); // Hash password before saving const salt = await bcrypt.genSalt(10); user.password = await bcrypt.hash(password, salt); await user.save(); // Generate JWT Token const payload = { user: { id: user.id, role: user.role, }, }; jwt.sign( payload, process.env.JWT_SECRET, { expiresIn: 3600 }, (err, token) => { if (err) throw err; res.json({ token }); } ); } catch (err) { console.error(err.message); res.status(500).send('Server error'); } } ); module.exports = router;
top of page

PARENT-INFO

Competition Schedule

Preliminary schedule - emailed 2 weeks prior
Final schedule - emailed 10 days prior
Schedules sent to email provided during registration.

​

Competition Info

Arrive at least 30 minutes prior to performance time
Check in at Information/Check In table upon arrival
Dressing rooms assigned at check in

Etiquette Reminders

Silence your cell phones, pagers, and all electronic devices
Enter and exit between routines
Show respect for other dancers on and off stage
Leave dressing rooms clean when you leave

bottom of page