InfyOm Blog

latest-post

Nowadays multi-tenant applications are more useful than single-tenant applications. We can use multi-tenant with multiple databases or single databases as per our need. But it's better to use a single DB with a multi-tenant when you have a small application.

In this tutorial, we are going to use multi-tenant with a single database.

We will implement multi-tenant with single DB by using the following package: https://github.com/archtechx/tenancy

Assuming you already have Laravel 8 repo setup. Now please follow the given steps to implement multi-tenancy with a single DB.

Package Installation

Run following commands :

  1. composer require stancl/tenancy

  2. php artisan tenancy:install

  3. php artisan migrate

Add following service provider to config/app.php

App\Providers\TenancyServiceProvider::class

Create Custom Model

Now create modal named MultiTenant into app\Models

MultiTenant.php

 SavingTenant::class,
        'saved'    => TenantSaved::class,
        'creating' => CreatingTenant::class,
        //        'created' => TenantCreated::class,
        'updating' => UpdatingTenant::class,
        'updated'  => TenantUpdated::class,
        'deleting' => DeletingTenant::class,
        'deleted'  => TenantDeleted::class,
    ];
}

Update Tenancy Configuration

As we have added custom model we also need to define that model into config/tenancy.php

Please change tenant_model value to our custom model.

'tenant_model' => \App\Models\MultiTenant::class,

Add Resolver

To use multi tenant with single DB we also need to add our customer resolver, that will be used into Middlewares that we will create ahead.

Create MultiTenantResolver into app\Resolvers

App\Resolvers\MultiTenantResolver.php

find(Auth::user()->tenant_id)) {
            return $tenant;
        }

        throw new TenantCouldNotBeIdentifiedByPathException($id);
    }

    public function getArgsForTenant(Tenant $tenant): array
    {
        return [
            [$tenant->id],
        ];
    }
}

Add Middleware

We will create our custom middleware that will set the current tenant into cache, and that will used by package to fire default query where('tenant_id', "tenant id we have set into middleware")

App\Http\Middleware\MultiTenantMiddleware.php

tenancy = $tenancy;
        $this->resolver = $resolver;
    }

    /**
     * Handle an incoming request.
     *
     * @param  Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $tenant = Auth::user()->tenant_id;

        return $this->initializeTenancy(
            $request, $next, $tenant
        );
    }
}

Also, don't forget to add middleware alias into App\Http\kernel.php

 protected $routeMiddleware = [
        ..............
        'multi_tenant' => MultiTenantMiddleware::class,
];

Now we will apply this multi_tenant middleware to our routes.

Add Trait to tenant-specific models

We have to add BelongsToTenant trait to all of our tenant-specific models.

Say if we want to add tenant_id into the users table then we must have to add BelongsToTenant to the app\Models\User model.

That trait will by default add following query everytime when we will try to fetch records or update records.

Where('tenant_id', 'tenant id will taken from cache')

Add tenant_id to tenant-specific migrations

As we have added the tenant trait, we must have to add tenant_id into tenant-specific migrations as specified below.

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            ...........................

            $table->string('tenant_id');

            $table->foreign('tenant_id')
                ->references('id')
                ->on('tenants')
                ->onUpdate('cascade')
                ->onDelete('cascade');

            $table->timestamps();
        });

Update TenancyServiceProvider

Replace the App\Providers\TenactServiceProvider by the following code.

 [],
            Events\TenantCreated::class => [
                JobPipeline::make([
                    Jobs\CreateDatabase::class,
                    Jobs\MigrateDatabase::class,
                    // Jobs\SeedDatabase::class,

                    // Your own jobs to prepare the tenant.
                    // Provision API keys, create S3 buckets, anything you want!

                ])->send(function (Events\TenantCreated $event) {
                    return $event->tenant;
                })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production.
            ],
            Events\SavingTenant::class => [],
            Events\TenantSaved::class => [],
            Events\UpdatingTenant::class => [],
            Events\TenantUpdated::class => [],
            Events\DeletingTenant::class => [],
            Events\TenantDeleted::class => [
                JobPipeline::make([
                    Jobs\DeleteDatabase::class,
                ])->send(function (Events\TenantDeleted $event) {
                    return $event->tenant;
                })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production.
            ],

            // Domain events
            Events\CreatingDomain::class => [],
            Events\DomainCreated::class => [],
            Events\SavingDomain::class => [],
            Events\DomainSaved::class => [],
            Events\UpdatingDomain::class => [],
            Events\DomainUpdated::class => [],
            Events\DeletingDomain::class => [],
            Events\DomainDeleted::class => [],

            // Database events
            Events\DatabaseCreated::class => [],
            Events\DatabaseMigrated::class => [],
            Events\DatabaseSeeded::class => [],
            Events\DatabaseRolledBack::class => [],
            Events\DatabaseDeleted::class => [],

            // Tenancy events
            Events\InitializingTenancy::class => [],
            Events\TenancyInitialized::class => [
//                Listeners\BootstrapTenancy::class,
            ],

            Events\EndingTenancy::class => [],
            Events\TenancyEnded::class => [
                Listeners\RevertToCentralContext::class,
            ],

            Events\BootstrappingTenancy::class => [],
            Events\TenancyBootstrapped::class => [],
            Events\RevertingToCentralContext::class => [],
            Events\RevertedToCentralContext::class => [],

            // Resource syncing
            Events\SyncedResourceSaved::class => [
                Listeners\UpdateSyncedResource::class,
            ],

            // Fired only when a synced resource is changed in a different DB than the origin DB (to avoid infinite loops)
            Events\SyncedResourceChangedInForeignDatabase::class => [],
        ];
    }

    public function register()
    {
        //
    }

    public function boot()
    {
        $this->bootEvents();
//        $this->mapRoutes();

        $this->makeTenancyMiddlewareHighestPriority();
    }

    protected function bootEvents()
    {
        foreach ($this->events() as $event => $listeners) {
            foreach (array_unique($listeners) as $listener) {
                if ($listener instanceof JobPipeline) {
                    $listener = $listener->toListener();
                }

                Event::listen($event, $listener);
            }
        }
    }

    protected function mapRoutes()
    {
        if (file_exists(base_path('routes/tenant.php'))) {
            Route::namespace(static::$controllerNamespace)
                ->group(base_path('routes/tenant.php'));
        }
    }

    protected function makeTenancyMiddlewareHighestPriority()
    {
        $tenancyMiddleware = [
            // Even higher priority than the initialization middleware
            Middleware\PreventAccessFromCentralDomains::class,

            Middleware\InitializeTenancyByDomain::class,
            Middleware\InitializeTenancyBySubdomain::class,
            Middleware\InitializeTenancyByDomainOrSubdomain::class,
            Middleware\InitializeTenancyByPath::class,
            Middleware\InitializeTenancyByRequestData::class,
        ];

        foreach (array_reverse($tenancyMiddleware) as $middleware) {
            $this->app[\Illuminate\Contracts\Http\Kernel::class]->prependToMiddlewarePriority($middleware);
        }
    }
}

Create / Fetch Tenant

Now we have to create a tenant and give that tenant_id to related users.

each user contains their specific tenant_id.

Use the following code to create a tenant :

 $tenant1 = \App\Models\MultiTenant::create([
     'name' => 'Tenant 1'
 ]);

 $tenant2 = \App\Models\MultiTenant::create([
     'name' => 'Tenant 2'
  ]);

That will create tenant into tenants table and values will be stored into data column as a son.

$tenant1 = App\Models\MultiTenant::where('data->name', 'Tenant 1')->first();

$tenant2 = App\Models\MultiTenant::where('data->name', 'Tenant 2')->first();

$tenant1User = User::where('id', 'user id here')->update(['tenant_id' => $tenant1->id]);

$tenant2User = User::where('id', 'user id here')->update(['tenant_id' => $tenant2->id]);

Now we have 2 tenants with 2 separate users who contain separate tenant ids.

Add Middleware to Routes

Now do login with User 1 and try to fetch all users from the database, it will return users of logged-in users' tenants only.

As we have the BelongToTenant trait into the User model.

Route::group(['middleware' => ['auth', 'multi_tenant']], function () { Route::get('users', function() {

 // only tenant-1 users will be returned because we are setting the logged-in user tenant into the cache from `multi_tenant`middleware.
 $allUsers = User::all();
});

});

You can use the same for other models too.

Hope this helps you.

August 14, 20212 minutesuserVishal Ribdiya

Posts

post

Generally, we are using a Swagger in Laravel. it will take time if we set up swagger manually. so, In this article, I going to show you very easy steps for setup in Laravel.

You can watch the following video tutorial as well.

Steps 1:

You should download these assets from here. unzip the folder and go to the public directory. you can found the swagger directory in the side public folder. let open the swagger directory and you can see the following files.

  • jquery-2.1.4.min.js
  • style.css
  • swagger-bundle.js
  • swagger.yaml

If are you still confuse then visit this link for files.

now, Copy the swagger directory and put it in your laravel application on the same path.

Steps 2:

We need to load swagger with proper swagger UI. so, let navigate to resources/views on the downloaded source code project.

You can see the swagger directory inside the views directory. copy the swagger directory to your laravel application on the same path. I don't think you need to do anything in this view file. let's go to the next step.

Steps 3:

You need to update this swagger.yaml file. you should update the following details first. and then add APIs documentation in this file. Api document example given here. you can refer it.

info:
  description: LPT APis
  version: 1.0.0
  title: LPT Frontend API's
basePath: /api/

Steps 4:

In this step, you need to create a route for loading swagger docs. so, let's open the web.php file add the following few lines of code.

Route::get('/docs', function () {
    return view('swagger.index');
});

Now, run a command php artisan serve and open http://127.0.0.1:8000/docs or open a virtualHostDomain/docs if you have one.

You should watch this tutorial as well if you using InfyOm Generator

September 22, 2021authorShailesh Ladumor
post

An easy way I'm going to show you how to increase product sales on the website. Also, you can apply this method and increase your products sales without any problems.

5 Ways to Increase your products sales on the website. Read whole blog content so, you can idea how to increase product sales in a short time.

Let's get started with this reliable technique to increase product sales on the website.

1. First, Know your Buyer's Persona

To reach your ideal customer first know who they are and should they are related to your product or not

Who are your buyers?

first, know who is your customer is and should they are matched with your custom criteria so, you can easily convince them to buy your products.

How to Convince them?

If your customer is relevant to your product niche so, you can easily convince them to buy your products and you can increase product sales.

2. Create Attractive Landing Page

The second step is to create an attractive landing page to attract customers to your website.

Create a simple landing page and describe more about your products so customers know what are the features of your product and how to use them.

Attract more customers to your landing page by adding video and Increase your sales on the website.

3. Add Testimonials & Case Studies of Product

The best way to convince your customer about your product is to add testimonials & case studies. Customers easily attract to this technique and trust your products.

Testimonial is a showing off your products rating and customer review. Good ratings and reviews easily built trust. Using this technique you can increase product sales.

4. Create Urgency

Everyone knows about Amazon. Amazon also creates an urgency to attract customers and sell more products. Urgency like, Hurry Up, Buy now, Sell end in 2 days, 24 hours left it's all are types of urgency.

So people can think about a product that sales are ends in 2days and they can buy before the end of the sale.

5. Give Offer - Money Back Guarantee

One of the most powerful reasons is customers not buying products is the risk factor of money back.

You can give an offer like this If you are not satisfied with our products then we will return your money 100%. If customers see this type of offer so they can think about buying your products. This is an easy way to increase product sales using this technique

Conclusion:

Using this technique you can easily increase your product sales on the website. All techniques are important and reliable.

August 25, 20212 minutesauthorAnkit Kalathiya
post

Android 7.0 (API Level 24) provides support for multilingual users, allowing users to select multiple locales in the setting. The locale object budget represents a specific geographic, political, or cultural area.

Operations that require this locale to perform a task are called locale-sensitive and use that locale to generate information for the user.

Step 1: Create A New Project & Create Resource Files

To create a new project in Android Studio.

In this step, we need to create a string resource file for the Gujarati language.Go to app > res > values > right-click > New > Value Resource File and name it as strings.

Now, we have to select the qualifier as a locale from the available list and select the language as Gujarati from the drop-down list. Below is a picture of the steps.

resource

language

Now, in this resource file, strings.xml(gu-rlN) add the code given below.

<resources>
    <string name="app_name">Change App Language</string>
    <string name="selected_language">ગુજરાતી</string>
    <string name="language">કેમ છો</string>
</resources>

And add this line to the string.xml file, which is the default for English.

<resources>
    <string name="app_name">Change App Language</string>
    <string name="selected_language">English</string>
    <string name="language">How are you</string>
</resources>

Step 2: Create The Layout File For The Application

In this step, we will create a layout for our application. Go to applications> res> Layout> activity_main.xml and add two text views, one for the message and one for the selected language, and an image view for the drop_down icon. Below is the code snippet for the activity_main.xml file.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="48dp"
        android:text="Welcome To InfyOm"
        android:textAlignment="center" />

    <Button
        android:id="@+id/btnGujarati"
        android:layout_margin="16dp"
        android:background="@color/colorPrimary"
        android:textColor="#ffffff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Gujarati"/>

    <Button
        android:id="@+id/btnEnglish"
        android:layout_margin="16dp"
        android:background="@color/colorPrimary"
        android:textColor="#ffffff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="English"/>

</LinearLayout>

Step 3: Create LocaleHelper Class

Now, we will create a local helper class. This class has all the functions that will help to change the language at runtime. Go to app > java > package > right-click and create a new Java class and name it LocalHelper. Below is the code for the local helper class.

import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.preference.PreferenceManager;

import java.util.Locale;

public class LocaleHelper {
        private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";

        // the method is used to set the language at runtime
        public static Context setLocale(Context context, String language) {
            persist(context, language);

            // updating the language for devices above android nougat
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                return updateResources(context, language);
            }
            // for devices having lower version of android os
            return updateResourcesLegacy(context, language);
        }

        private static void persist(Context context, String language) {
            SharedPreferences preferences =                       PreferenceManager.getDefaultSharedPreferences(context);
            SharedPreferences.Editor editor = preferences.edit();
            editor.putString(SELECTED_LANGUAGE, language);
            editor.apply();
        }

        // the method is used update the language of application by creating
        // object of inbuilt Locale class and passing language argument to it
        @TargetApi(Build.VERSION_CODES.N)
        private static Context updateResources(Context context, String language) {
            Locale locale = new Locale(language);
            Locale.setDefault(locale);

            Configuration configuration = context.getResources().getConfiguration();
            configuration.setLocale(locale);
            configuration.setLayoutDirection(locale);

            return context.createConfigurationContext(configuration);
        }

        @SuppressWarnings("deprecation")
        private static Context updateResourcesLegacy(Context context, String language) {
            Locale locale = new Locale(language);
            Locale.setDefault(locale);

            Resources resources = context.getResources();

            Configuration configuration = resources.getConfiguration();
            configuration.locale = locale;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                configuration.setLayoutDirection(locale);
            }

            resources.updateConfiguration(configuration, resources.getDisplayMetrics());

            return context;
        }
    }

Step 4: Working With the MainActivity.java File

In this step, we will apply Java code to switch between string.xml files to use different languages. First, we will initialize all the views and set click behavior on an Alert dialog box to choose the desired language with the help of the LocalHelper class. Below is the code is given for the MainActivity.java class.

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView messageView;
    Button btnGujarati, btnEnglish;
    Context context;
    Resources resources;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        messageView = (TextView) findViewById(R.id.textView);
        btnGujarati = findViewById(R.id.btnGujarati);
        btnEnglish = findViewById(R.id.btnEnglish);

        btnEnglish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                context = LocaleHelper.setLocale(MainActivity.this, "en");
                resources = context.getResources();
                messageView.setText(resources.getString(R.string.language));
            }
        });

        btnGujarati.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                context = LocaleHelper.setLocale(MainActivity.this, "hi");
                resources = context.getResources();
                messageView.setText(resources.getString(R.string.language));
            }
        });

    }
}
August 25, 20213 minutesauthorVivek Beladiya
post

The entire UI / UX design process can be divided into 5 stages. The responsible department of your organization will analyze every step, and so it will be almost complete!

Design_Process

The various steps involved in the User experience design process are as follows:

1.Product Definition

  • Product definition is the first step involved in the user design process. The team responsible for this will collect the user's needs based on their business environment.

  • It is very necessary because the real scope of the product and the understanding of their existence takes place at this stage.

  • It's simple; Before starting work, explain the requirements to your UI / UX designers!
  • The people involved in this phase are the design team, the business manager, and the product manager. The entire team should consult with clients in their environment. Analyze their needs within the framework of your operation.

  • Notable results of this phase are user personality, user stories, and use case diagrams.

Product_Definition

2. Research

Research is the most crucial element for a designer. The designing team studies how the existing system works for the current client proposal. There are three main functions at this stage:

  • Have an understanding of competition.
  • Study your existing domain thoroughly.
  • Going through a competitive strategy to test the results.

The research process should also include an understanding of the latest UI / UX trends, design principles, and guidelines.

3. Analysis

In this phase, use the items collected in the research phase. Using the information obtained, create a guessing personality and experience the map.

  • Hypothetical Personas: Creating predictable scenarios helps designers learn about different individuals who will be users of your product. It allows showing the actual presentation of the final product. The design team can figure out what the look will look like after delivery.

  • Experience Maps: Experience maps show user flow in your final product. All this is done using visual representations through proper interaction with the client in the product definition phase.

4. Design

In the design process, we finally finish giving life to the ideas collected in the above three steps. Now is the time to work on the final graphics. The design team will execute the final design at this stage.

Significant results of the designing phase are:

Sketching:

The designing phase begins with sketching. Designers usually create handmade sketches to visualize the concept in simple terms. UX / UI designers can stick to a specific option after the sketching process.

Design

Creating wireframes:

A wireframe is a visual structure that displays page hierarchy and elements in a product. The wireframe is considered the backbone of the product. It is also called the skeleton of design. It’s mostly about the overall look of the final product.

Creating Prototypes:

The prototypes focus on the realization of the UI / UX product that one designs. It’s more about the experience of interaction. Prototypes give you the effect of a simulator.

Creating Design Specifications: Design specification includes user flow and task flow diagrams. It depicts the overall working and the style requirements of the UI/UX product. It describes the processes and graphical elements to create amazing user experiences.

5.Validation or Testing

Validation_or_Testing

Testing is a phase that determines the overall quality of the final product. Examiners make notes of matters that need to be corrected and send them back to a respected team to correct errors.

When evaluating your final product, there are several factors to consider. They are as follows:

  • Is the system user-friendly?
  • Is it flexible and easy to operate?
  • Does it solve the client's problem?
  • Is it reliable and attracts users to come back every time they need your service?

To create an amazing UX / UI interface, one needs to follow a systematic and organized approach. A UI / UX design process strategy will help you achieve that.

The entire design team will play its part in the process. This is a great way to retain your existing customers and attract new ones in this highly competitive world.

August 25, 20212 minutesauthorKishan Savaliya
post

Today I'm going to show you Types of SEO. Basically, White Hat SEO, Black Hat SEO, Gray Hat SEO are the types of SEO and all are different from each other.

All SEO people or people who want to try to rank a website on google must understand the terms Types of SEO.

So, Let's get started with this topic what are the types of SEO.

1. Types of SEO - White Hat SEO

If you want to Rank organically Website in google as long so, recommended technique is White Hat SEO.

Benefits Of White Hat SEO

  • Organic and Ethical SEO Activities are used in white hat SEO.
  • A white hat SEO technique is a must for the best long-lasting and sustainable rankings and results.
  • For building a positive online reputation this technique is must require.

Techniques of White Hat SEO

  1. Making SEO websites that is user-friendly according to the Google updates and guidelines.
  2. Website loading speed technique and responsive website are must user friendly.
  3. Quality evergreen informative content gives the best results.
  4. Meta tags and descriptions should be keyword-rich and relevant to page content and URL.
  5. Keep site structure user friendly.
  6. Images and videos must be relevant to the page content.

Apply only the white hat SEO technique if you don't want your site panalized.

2. Types of SEO - Black Hat SEO

Black Hat SEO is the Worst among all types of SEO because you apply this technique/type so, google can deindex your site

Don't recommend or try this type of techniques.

Disadvantages of Black Hat SEO

  • This is a completely unethical process.
  • Violation of SEO guidelines and algorithms.
  • Black hat SEO can provide quick and good results in short term but is not sustainable and long-lasting.
  • Use of black hat SEO can do your domain black list and remove your website from search engines.
  • Black hat tactics are spamming tactics.
  • The website would be deindexed for a lifetime by google.

Techniques of Black Hat SEO

  1. Use of paid links
  2. Hidden text in the website
  3. Article spinning
  4. Hidden links
  5. Cloaking
  6. Website over optimzation
  7. Content scams
  8. Link manipulation
  9. SERP spam
  10. Crooked website

3. Types of SEO - Gray Hat SEO

Gray hat SEO is not white hat SEO or Black hat SEO but it is a combination of white hat SEO & black hat SEO.

In gray hat SEO white hat SEO technique used around 80% to 90% and the Black hat SEO technique used 10% to 20%.

Most people used this technique because in this technique most used white hat SEO.

Sometimes Google can capture black hat SEO techniques in Gray hat SEO that so would be deindexed your site permanently by google.

Conclusion:

In this topic What are the different types of SEO Techniques. White hat SEO techniques are the best for your site which I can recommend and all SEO people also used this technique. So it would be best for all.

August 24, 20212 minutesauthorMilan Gangani
post

This blog gives information and different elements of the meta tag.

A meta is a type of HTML tag.

meta is the only exit in HTML5. They are usually on the "head" of the page.

It provides search engines with information about a website page. Metadata will not be displayed on the page, but the machine is parsable.

The meta element is used to specify page description, keywords, author, and other metadata.

HTML introduced a method to let web designers take control over the viewport (the user's visible area of a web page) through the meta tag.

Note: Metadata is always passing as name/value pairs.

meta keywords

Define keywords for search engines

<meta name="keywords" content="HTML5 meta tag, meta tag important for SEO, meta description, meta keywords, meta author, meta title">

meta description

Define a description of your webpage.

Description Meta tags are coming up that contain web passage information. The description meta tag is the most important tag, your application will be ranked on your page by search engines. The description has relationships between 150 and 160 characters

<meta name="description" content="Meta tag provides search engines with information about a website page.">

Author Name

Author attribute specifies the author of the webpage.

<meta name="author" content="Payal Pansuriya">

http-equiv attribute

HTML meta refresh tag refreshes the page as you mention the time in the content.

<meta http-equiv="refresh" content="10">

August 24, 20212 minutesauthorPayal Pansuriya
post

In a previous blog we have discussed a few essential things about SWOT Analysis. Let's move further with How to do SWOT Analysis and How to use SWOT Analysis.

##How to Do a SWOT Analysis##

Before starting anything first draw up an Analysis Matrix. You can use a ready-made template. It’s a 2*2 grid, which represents four aspects of SWOT.

Specify your Objective why you are going to do SWOT Analysis Create a grid and divide it into four-part Label each box with a name for instance - Strength, Weakness, Opportunity, threat Add strength and weaknesses inappropriate part of the Matrix Gather the right people from different parts of your organization and make sure each will represent a specific department or team. Allow all to throw the ideas at the wall. After receiving ideas from your people, Organize ideas and then rank them. A voting system would be helpful to choose the best ideas. Based on the voting, prioritized list of ideas. The list is now up for discussion and debate. ##The Helpful questions which inspire your Analysis##

###Strengths### It's the internal positive attributes of your company. The things are within your control. What do you do well? - the things which your company does well What unique resources can you draw on ?- Qualities that separate you from others in the market. What are the available skills? - Internal resources such as skills and available resources. What do others see as your strengths ?- Tangible assets such as intellectual property, capital proprietary technologies, etc.

###Weaknesses### What could improve ?- Things your company lack Where do you have fewer resources than others?- Things your competitors do better than you What are others likely to see as weaknesses ?- Resources limitations

###Opportunities### What opportunities are open to you ?- Uncleared market for specific products. What trends could you take advantage of ?- few competitors in your area. How can you turn strengths into opportunities ?- Emerging needs for your products and company

###Threats### What threats could harm you ?- Emerging competitors in the market. What are your competitors doing ?- Changing regulatory environment. What threats do your weaknesses expose to you ?- changing Customers’ attitude towards your company Is your business in a poor location?

Conducting the SWOT Analysis in your organization it’s a powerful way to evaluate the company or project whether there are 5 people or 500 people.

August 24, 2021authorMariyam Bemat
post

Web browser, is the most used application or portal for users to access the Internet. These browsers are very advanced, with improved usability and ubiquity. The individual is exposed to different internet browsers. Each of them consists of some perceived and real benefits. However, it is also true that none of them are safe from security threats. In fact, website browsers are more vulnerable to security vulnerabilities and when users interact with websites, they carry the possibilities of malware and other threats in them.

Mainly, 5 most common browser security threats and how to protect your system

With that in mind, here are some of the most common browser security threats and how to protect your system from them are follow below:

1. Removing Saved Login Credentials

Bookmarks associated with saved logins for linked sites is a terrible combination and doesn't really favor your system. When this is done, a hacker with little knowledge can hack it. There are some websites that use two-factor authentication, such as sending OTPs to your mobile phone to access them. However, many of them use this as a one-time access token so that a person can confirm his or her identity on the system they are intended to connect from. Deleting saved credentials is not good for your browser as well as for your system in general. Cybercriminals A can easily reset important identifiers and profiles on almost every website you visit. They can do this from anywhere and at any time. Once they have your IDs and passwords, they can run them from any system of their choice.

2. Permission to Browser History

Your browser's browsing history is a type of map or mechanism that keeps track of what you're doing and what sites you're visiting. It not only tells us which sites you visited, but for how long and when as well. If a criminal wants to get your credentials from the sites you access, they can do so easily, knowing which sites you have accessed through your browsing history.

3. Cookies

Cookies made up of locally stored files that identify association with certain files are another common browser security threat. Similar to browsing history, it can also track the site you visit and get credentials.

4. Browser Cache

Browser cache consists of storing sections of website pages which makes accessing and loading sites easier and faster, every time you visit. This can also identify the site or portal you have accessed and the content you have gone through. It also saves your location and device detection, making it a risky item as anyone can identify your location and device.

5. Autofill Information

Autofill information can pose a huge threat to your browser. Browsers like Chrome and Firefox store your address information, sometimes your profile information, and other personal information. But are you prepared if you fall into the wrong hands? Isn't it? Well, the criminal is now aware of and privacy to all your personal details.

In our next tutorial, will see Tips and Recommendations on How You Can Protect Yourself from These Threats.

August 23, 20212 minutesauthorBhumi Khimani