Encara no acaba de crear amb codi

This commit is contained in:
Pasq G 2025-01-22 23:59:04 +01:00
parent 2530991ba0
commit a7b3ba7cb5
3 changed files with 166 additions and 10 deletions

View File

@ -15,9 +15,9 @@ import CreatableSelect from 'react-select/creatable';
// import { BarraNav } from "./BarraNav/BarraNav";
// import InfiniteCalendar from 'react-infinite-calendar';
import 'react-infinite-calendar/styles.css';
// import 'react-infinite-calendar/styles.css';
function generaCodi() {
function generaCodi() {0
return Random.id().slice(0, 5);
}

View File

@ -53,7 +53,9 @@ export const Login = () => {
};
if (isLogin) {
return <form onSubmit={handleLogin}>
return <form
onSubmit={handleLogin}
>
<label htmlFor="email">Correu electrònic o nom d'usuari: </label>
<input id="email" type="email" required />
<br />
@ -66,24 +68,103 @@ export const Login = () => {
}
return (
<form onSubmit={handleRegistration}>
<form
action={async d => {
// let userId, codi;
try {
const username = d.get('username');
const email = d.get('email');
const tel = d.get('tel');
const password = d.get('password');
const password2 = d.get('password2');
const codi = d.get('codi');
if (password !== password2) {
console.error("Passwords do not match!");
return null;
}
console.log("username: ", username);
console.log("email: ", email);
console.log("tel: ", tel);
console.log("password: ", password);
console.log("password2: ", password2);
console.log("codi: ", codi);
const uObj = {
username,
email,
tel,
password,
password2
};
Meteor.callAsync('creaUsuariAmbCodi', uObj, codi);
// userId = await Accounts.createUser({
// username,
// email,
// password
// });
// userId && await Roles.addUsersToRolesAsync(userId, [ROLS_GLOBALS.USUARI]);
// console.log("userId deL NOU USUARI: ", userId);
} catch (err) {
alert(err);
console.error(err);
}
// try {
// userId && await Meteor.callAsync('usaCodiAmbUsuari', userId, codi);
// navigate('/');
// } catch (err2) {
// alert(err2);
// console.error(err2);
// }
// Meteor.callAsync('editaOAfigCodi', {
// ...codiGenerat || [],
// codi: codiGenerat,
// ambit: d.get('selAmbit') || "",
// rol: d.get('selRol'),
// act_abs: d.get('activ_abs'),
// act_cond: d.get('activ_cond'),
// periode_validesa_ini: d.get('periode_validesa_ini'),
// periode_validesa_fi: d.get('periode_validesa_fi')
// })
// .then(() => setAmbitSeleccionat(null))
// .catch(err => console.error(err))
// ;
}}
>
<label htmlFor="username">Nom d'usuari: </label>
<input id="username" type="text" required />
<input id="username" name="username" type="text" required />
<br />
<label htmlFor="email">Correu electrònic: </label>
<input id="email" type="email" required />
<input id="email" name="email" type="email" required />
<br />
<label htmlFor="password">Contrasenya: </label>
<input id="password" type="password" required />
<input id="password" name="password" type="password" required />
<br />
<label htmlFor="password2">Repeteix la contrasenya: </label>
<input id="password2" type="password" required />
<input id="password2" name="password2" type="password" required />
<br />
<label htmlFor="tel">Telèfon: </label>
<input id="tel" type="tel" required />
<input id="tel" name="tel" type="tel" required />
<br />
<label htmlFor="codi">Codi d'entrada (opcional): </label>
<input id="codi" type="text" />
<input id="codi" name="codi" type="text" style={{textAlign: `center`, fontWeight: `bolder`, fontSize: `1.1rem`}} onChange={ev => ev.target.value = (ev.currentTarget.value.length <= 5 && ev.currentTarget.value.toUpperCase()) || ev.currentTarget.value.slice(0, 5) } />
<br />
<button type="submit">Registrar</button>
<button onClick={() => setIsLogin( true )}>Torna per accedir</button>

View File

@ -7,6 +7,7 @@ import { ROLS_GLOBALS, ROLS_DE_POBLE } from '../imports/roles';
import { NecessitatsCollection } from '../imports/api/necessitats';
import { TipusCollection } from '../imports/api/tipus';
import { CodisCollection } from '../imports/api/codis';
// import { Codis } from '../imports/ui/Codis';
async function insertPoble({ nomPoble, cp, comarca }) {
await PoblesCollection.insertAsync({ nomPoble, cp, comarca, createdAt: new Date() });
@ -425,6 +426,80 @@ Meteor.methods({
} catch (e) {
console.error(e);
}
},
'creaUsuariAmbCodi': async function (uObj, codi) {
const codiObj = await CodisCollection.find({codi}).fetchAsync();
const userId = await Accounts.createUserAsync(uObj);
const ara = new Date();
const dataIni = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_ini) : null;
const dataFi = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_fi) : null;
console.log("codiObj: ", codiObj);
console.log("ara: ", ara);
console.log("dataIni: ", dataIni);
console.log("dataFi: ", dataFi);
console.log(`codiObj.act_cond === "on"`, codiObj.act_cond === "on");
try {
console.log(`APLICANT CODI "${codi}" sobre "${userId}".`); // Comprovant si ${Meteor.userId()} és Admin: `, esAdmin);
if ((codiObj.act_cond==="on" && (ara >= dataIni && ara <= dataFi)) || codiObj.act_abs) {
Roles.addUsersToRolesAsync(userId, codiObj.rol, codiObj.ambit);
}
} catch (e) {
console.error(e);
}
},
'usaCodiAmbUsuari': async function (userId, codi) {
// const esAdmin = await Roles.userIsInRoleAsync(Meteor.userId(), "admin");
const codiObj = await CodisCollection.find({codi}).fetchAsync();
const ara = new Date();
const dataIni = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_ini) : null;
const dataFi = codiObj.act_cond === "on" ? new Date(codiObj.periode_validesa_fi) : null;
console.log("codiObj: ", codiObj);
try {
console.log(`APLICANT CODI "${codi}" sobre "${userId}".`); // Comprovant si ${Meteor.userId()} és Admin: `, esAdmin);
if ((codiObj.act_cond==="on" && (ara >= dataIni || ara <= dataFi)) || codiObj.act_abs) {
Roles.addUsersToRolesAsync(userId, codiObj.rol, codiObj.ambit);
}
// if (esAdmin && codiObj.codi) {
// return await CodisCollection.upsertAsync(
// {
// _id: codiObj._id
// }, {
// $set: {
// ...codiObj,
// usuari: Meteor.userId(),
// editedAt: new Date()
// }
// }
// );
// } else {
// throw new Error("El valor del codi no és vàlid");
// }
} catch (e) {
console.error(e);
}
},
});