export function loginProtect(data) {
return new Promise((resolve, reject) => {
// ищем в базе совпадения по имейлу
UserModel.findOne({ user_email: data.user_email }, function (err, user) {
if (err) return reject(err);
// далее если совпадение нашлось сверяешь хэш пароль с тем что был прислан в функцию
bcrypt.compare(data.user_password, user.user_password, function (err, res) {
if (err) return reject(err);
// res это результат работы, возвращает true или false
return resolve(res);
});
});
});
}
app.post('/api/login', (req, res) => {
const user = {
user_data: req.query
}
// отправляем данные в контроллер
UserController.loginProtect(req.query).then(result => {
// handle success
jwt.sign({ user: user.user_data }, process.env.SECRET_FOR_JWT, (err, token) => {
res.json({
success: true,
token
});
});
}).catch(err => {
// handle error
});
});
Замысел таков, что приложение должно иметь серверный рендеринг, реакт/редакс и базу двнных на mysql.
componentWillReceiveProps(nextProps) {
console.log("nextProps.idcat",nextProps.idcat)
if (nextProps.idcat!==undefined){
fetch(`${ENV.API_PROT}${ENV.API_LINK}/api/${ENV.API_VER_GLOBAL}/categories/${nextProps.idcat}`)
.then(response => response.json())
.then(json => {
console.log(json);
this.setState({
sameNews: json.data,
isLoading: false
});
console.log(this.state.sameNews);
});
}
}
<form name="person">
<input name="name" value="Иван">
<input name="surname" value="Иванов">
</form>
var object = {};
var formData = new FormData(document.forms.person);
formData.forEach(function(value, key){
object[key] = value;
});
var json = JSON.stringify(object);
var xhr = new XMLHttpRequest();
xhr.open("POST", '/submit', true)
xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
// Отсылаем объект в формате JSON и с Content-Type application/json
xhr.send(json);
$('input').on('input', function() {
const
$this = $(this),
newVal = +$this.val(),
oldVal = +$this.data('oldVal') || 0;
if (oldVal !== newVal) {
console.log(`новое ${['больше', 'меньше'][+(oldVal > newVal)]}`);
}
$this.data('oldVal', newVal);
});
parseFloat(1617.7568).toFixed(2)
1617.76
data='1 123.32245'
num=parseFloat(data.replace(' ','')).toFixed(2)
parseFloat(num)
>>1123.32
@font-face {
font-family: "SuperFont";
src: url("fonts/SuperFont/SuperFontRegular.eot");
src:
local("☺"),
url("fonts/SuperFont/SuperFontRegular.eot?#iefix") format("embedded-opentype"),
url("fonts/SuperFont/SuperFontRegular.woff2") format("woff2"),
url("fonts/SuperFont/SuperFontRegular.woff") format("woff"),
url("fonts/SuperFont/SuperFontRegular.ttf") format("truetype");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "SuperFont";
src: url("fonts/SuperFont/SuperFontBold.eot");
src:
local("☺"),
url("fonts/SuperFont/SuperFontBold.eot?#iefix") format("embedded-opentype"),
url("fonts/SuperFont/SuperFontBold.woff2") format("woff2"),
url("fonts/SuperFont/SuperFontBold.woff") format("woff"),
url("fonts/SuperFont/SuperFontBold.ttf") format("truetype");
font-weight: bold;
font-style: normal;
}
body {
font-family: "SuperFont", sans-serif;
}