redesigned the project sharing popup to be a multi select dropdown that populates the options by using the input as a fuzzy search filter on the current users & invited users. users can now also be directly invited by email from the project share window. if invited this way, then the user will receive an email that sends them to a registration page, then a confirmation page. the initial registration was always redone so that it uses a similar system to the above in that it now will accept the first registered user if there are no other accounts (besides 'system').
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
import React, { useState } from 'react';
|
|
import axios from 'axios';
|
|
import Register from 'shared/components/Register';
|
|
import { useHistory, useLocation } from 'react-router';
|
|
import * as QueryString from 'query-string';
|
|
import { toast } from 'react-toastify';
|
|
import { Container, LoginWrapper } from './Styles';
|
|
|
|
const UsersRegister = () => {
|
|
const history = useHistory();
|
|
const location = useLocation();
|
|
const [registered, setRegistered] = useState(false);
|
|
const params = QueryString.parse(location.search);
|
|
return (
|
|
<Container>
|
|
<LoginWrapper>
|
|
<Register
|
|
registered={registered}
|
|
onSubmit={(data, setComplete, setError) => {
|
|
if (data.password !== data.password_confirm) {
|
|
setError('password', { type: 'error', message: 'Passwords must match' });
|
|
setError('password_confirm', { type: 'error', message: 'Passwords must match' });
|
|
} else {
|
|
// TODO: change to fetch?
|
|
fetch('/auth/register', {
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
user: {
|
|
username: data.username,
|
|
roleCode: 'admin',
|
|
email: data.email,
|
|
password: data.password,
|
|
initials: data.initials,
|
|
fullname: data.fullname,
|
|
},
|
|
}),
|
|
})
|
|
.then(async x => {
|
|
const response = await x.json();
|
|
const { setup } = response;
|
|
console.log(response);
|
|
if (setup) {
|
|
history.replace(`/confirm?confirmToken=xxxx`);
|
|
} else if (params.confirmToken) {
|
|
history.replace(`/confirm?confirmToken=${params.confirmToken}`);
|
|
} else {
|
|
setRegistered(true);
|
|
}
|
|
})
|
|
.catch(() => {
|
|
toast('There was an issue trying to register');
|
|
});
|
|
}
|
|
setComplete(true);
|
|
}}
|
|
/>
|
|
</LoginWrapper>
|
|
</Container>
|
|
);
|
|
};
|
|
|
|
export default UsersRegister;
|