feature flag for signup

This commit is contained in:
Timur Ercan
2023-03-19 14:59:10 +01:00
parent 72914c49c4
commit 025e6a4eb1
4 changed files with 38 additions and 16 deletions

View File

@ -18,4 +18,8 @@ NEXTAUTH_URL='http://localhost:3000'
# You can also configure you own SMTP server using Nodemailer in sendMailts. (currently not possible via config) # You can also configure you own SMTP server using Nodemailer in sendMailts. (currently not possible via config)
SENDGRID_API_KEY='' SENDGRID_API_KEY=''
# Sender for signing requests and completion mails. # Sender for signing requests and completion mails.
MAIL_FROM='' MAIL_FROM=''
#FEATURE FLAGS
# Allow users to register via the /signup page. Otherwise they will be redirect to the home page.
ALLOW_SIGNUP=false

View File

@ -17,12 +17,11 @@ interface LoginValues {
csrfToken: string; csrfToken: string;
} }
export default function Login() { export default function Login(props: any) {
const router = useRouter(); const router = useRouter();
const methods = useForm<LoginValues>(); const methods = useForm<LoginValues>();
const { register, formState } = methods; const { register, formState } = methods;
const [errorMessage, setErrorMessage] = useState<string | null>(null); const [errorMessage, setErrorMessage] = useState<string | null>(null);
let callbackUrl = let callbackUrl =
typeof router.query?.callbackUrl === "string" typeof router.query?.callbackUrl === "string"
? router.query.callbackUrl ? router.query.callbackUrl
@ -117,7 +116,6 @@ export default function Login() {
/> />
</div> </div>
</div> </div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="text-sm"> <div className="text-sm">
<a href="#" className="font-medium text-neon hover:text-neon"> <a href="#" className="font-medium text-neon hover:text-neon">
@ -125,7 +123,6 @@ export default function Login() {
</a> </a>
</div> </div>
</div> </div>
<div> <div>
<Button <Button
type="submit" type="submit"
@ -152,15 +149,17 @@ export default function Login() {
<div className="relative flex justify-center"></div> <div className="relative flex justify-center"></div>
</div> </div>
</div> </div>
<p className="mt-2 text-center text-sm text-gray-600"> {props.allowSignup ? (
Are you new here?{" "} <p className="mt-2 text-center text-sm text-gray-600">
<Link Are you new here?{" "}
href="/signup" <Link
className="font-medium text-neon hover:text-neon" href="/signup"
> className="font-medium text-neon hover:text-neon"
Create a new Account >
</Link> Create a new Account
</p> </Link>
</p>
) : null}
</form> </form>
</FormProvider> </FormProvider>
</div> </div>

View File

@ -1,13 +1,23 @@
import Head from "next/head"; import Head from "next/head";
import Login from "../components/login"; import Login from "../components/login";
export default function LoginPage() { export default function LoginPage(props: any) {
return ( return (
<> <>
<Head> <Head>
<title>Login | Documenso</title> <title>Login | Documenso</title>
</Head> </Head>
<Login></Login> <Login allowSignup={props.ALLOW_SIGNUP}></Login>
</> </>
); );
} }
export async function getServerSideProps(context: any) {
const ALLOW_SIGNUP = process.env.ALLOW_SIGNUP === "true";
return {
props: {
ALLOW_SIGNUP: ALLOW_SIGNUP,
},
};
}

View File

@ -15,6 +15,15 @@ export default function SignupPage(props: { source: string }) {
export async function getServerSideProps(context: any) { export async function getServerSideProps(context: any) {
const signupSource: string = context.query["source"]; const signupSource: string = context.query["source"];
if (process.env.ALLOW_SIGNUP === "false")
return {
redirect: {
destination: "/login",
permanent: false,
},
};
return { return {
props: { props: {
source: signupSource ? signupSource : "", source: signupSource ? signupSource : "",