User-Authentication

Introduction

This is a guide to use user auth in vaahcms. Before using auth you need to install module and theme. For the module and theme set up follow below link:- Module and theme

NOTE:
In this tutorial we will be generating MyTheme theme and will also generate auth for it.

Step-1

Firstly you need to update VaahCms self update Use below command for that :

npm install vaah -g

Then install theme using below command :

npx vaah cms:t

After running this command, it will ask you following questions, answers also mentioned in highlighted text here:

  • Name of The Theme you want to create. For example MyTheme.
Enter your theme name:  MyTheme
  • Title of the Theme. For example Theme for myself.
Enter meaningful title for your theme:  Theme for myself
  • Detailed Description about the Theme.
Enter your theme description:  This theme will be used for testing purpose only
  • Name of the person creating the Theme or press enter to go with default value provided.
Enter Author name:  vaah
  • Email of the author or press enter to go with default value.
Enter Author email:  support@vaah.dev
  • Author website and download url or Press Enter for default value.
Enter author website:  https://vaah.dev
Enter download url: 

Enter true if you want to run migration for this theme as soon as the theme is activated else select false.

Do you want to run migration when activated (true/false):  true

Once this step is complete, it will generate a new folder at VaahCMS > Themes > MyTheme

Now, you actually activate the theme by visiting following URL:

<public-url>/backend#/vaah/themes/   

Follow below image for reference:

NOTE
Since we have generated a theme and activated it,now we will generate auth for it.

Step-2

npx vaah cms:auth

Step-3

  • Now in terminal it will show some procedure which we have to follow them.
Following steps:
1) Include Routes/frontend/routes-auth.php in Routes/frontend.php of the theme
2) Include VueScripts.js in webpack.mix.js, sample code is below:
    //To js minification
    let jses = [
        './../Resources/assets/js/VueScripts.js',
    ];

    mix.js(jses,  output_folder+'/build/script.js');
3) Include the CSS in <head> tag of master/default blade layout of the theme if not included:
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
    <link rel="stylesheet" href="https://unpkg.com/buefy/dist/buefy.min.css">

4) Include the JS script before </body> tag of master/default blade layout of the theme if not included:
    <script src="https://unpkg.com/jquery@3.6.0/dist/jquery.js"></script>
    <script src="https://unpkg.com/axios@0.21.1/dist/axios.min.js"></script>
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
    <script src="https://unpkg.com/buefy/dist/buefy.min.js"></script>
    <script src="{{vh_theme_assets_url("MyTheme", "build/script.js")}}"></script>
5) Run npm run dev in the root folder of the theme
6) Now, following routes will be available:
a) <public-url>/signin
b) <public-url>/signup

Step-4

  • Include route auth file in VaahCms/Themes/MyTheme/Routes/frontend.php

Add this code in above path

include("frontend/routes-auth.php");

Step-5

  • Include VueScripts in VaahCms/Themes/MyTheme/Vue/webpack.mix.js

Add this code in above path

let jses = [
        './../Resources/assets/js/VueScripts.js',
    ];

    mix.js(jses,  output_folder+'/build/script.js');

Follow below image for reference:

Step-6

  • Include the vue router file VaahCms/Themes/MyTheme/Resources/views/frontend/layouts/default.blade.php

Add this code in above path

<script src="{{vh_theme_assets_url("MyTheme", "build/script.js")}}"></script>

Follow below image for reference:

Step-7

Now you need to go to terminal and run these commands.

Run 'npm install' at VaahCms/Themes/MyTheme/Vue/package.json file
Now run 'npm run prod' at VaahCms/Themes/MyTheme/Vue/package.json file

Step-8

Now you need to click on publish assets button.
Follow below image for reference:

Step-9

Then add /signup ahead of your URL to display signup page

<public-url>/signup

Follow below image for reference:

Step-10

Then add /signin ahead of your URL to display sign in page

<public-url>/signin

Follow below image for reference: