Giter VIP home page Giter VIP logo

yii2-usuario's Introduction

Yii 2 Usuario Extension

Documentation Status Join the chat at https://gitter.im/2amigos/yii2-usuario Packagist Version Latest Stable Version Total Downloads Build Status Latest Unstable Version
Scrutinizer Code Quality

Yii 2 usuario is a highly customizable and extensible user management, RBAC management, authentication, and authorization Yii2 module extension.

It works extensively with Yii's Container making it really easy to override absolutely anything within its core. The module is built to work out of the box with some minor config tweaks and it comes with the following features:

  • Backend user/profile/account management
  • Backend RBAC management
  • Login via username/email + password process
  • Login via social network process
  • Password recovery process
  • Two-Factor authentication process
  • Google reCaptcha

We considered that RBAC was essential to be included into any user management module, even if you simply use one user with admin role, its much better to actually work with RBAC just in case your application scales in the future.

Boostrap 4 and 5 support

With the release of 1.6, contributors started implementing changes for supporting newer versions of the Boostrap library, being Usuario stuck at 3.

Up until around May 2023, the master branch will remain stable, so devs who in these years relied on it for deployment can have time to migrate to a stable version. BS5 development is ongoing on branch 2.0.0-dev, which will eventually be merged in master around May.

You can check issues #476, #488, #500 for updates, or the branch itself.

Documentation

You can read the latest docs on http://yii2-usuario.readthedocs.io/en/latest/

Need Help?

If you have issues, please use the Gitter room of this repository https://gitter.im/2amigos/yii2-usuario. Please, remember that we may not be online all the time. We expect that we can build a community around the users of this module

Contributing

Please, read our CONTRIBUTION guidelines.

Credits

This module is highly inspired by the excellent work of Dektrium on both of its modules:

In fact, we have used some of its processes, commands, views, and some of its attribute names to somehow standardize the modules and make it easier for our developers to swap from Dektrium's modules to our own.

2amigOS!
Beyond Software
www.2amigos.us

yii2-usuario's People

Contributors

ajmedway avatar bscheshirwork avatar dezinger avatar eluhr avatar eseperio avatar faenir avatar gugoan avatar jkmssoft avatar julian-b90 avatar kartik-v avatar katenkka avatar kooorierdeployer avatar liviuk2 avatar maksimkiselev avatar maranqz avatar marcogermani87 avatar matteof96 avatar maxxer avatar mrbig00 avatar niciz avatar pappfer avatar pawelkania avatar quique avatar resurtm avatar squio avatar tonisormisson avatar tonydspaniard avatar tsdogs avatar wautvda avatar weesee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yii2-usuario's Issues

How i can install this module?

me parece muy interesante este modulo, pero no se como instalarlo, por ejemplo donde lo ubico, que es Da?
disculpen mi ignorancia

Provide different module layout params for admin and public controllers

What steps will reproduce the problem?

I'm trying to apply different layouts for public controllers and administrating ones

What is the expected result?

It should be easier to setup different layouts

What do you get instead?

I have to override controllers or use DiC for that in bootstrap process

Maybe it'll be better to separate modules for administrating users and public controllers? (login, register etc)

Implement User factory

It would be a nice and handy feature to have a user factory.

Imagine these use cases:

  • Creating users from cli
  • Creating users from rest api's

Ensure dabilite commits are incorporated into yii2-usuario

Hey !

great to see dektrium evolve in the yii2-usuario project. About 2 months ago a fork of dektrium was started called dabilite. It already has some bugfixes (28 commits ahead):

dektrium/yii2-user@master...dabilite:master

I would love to abandon dabilite when these changes and improvements are incorporated into yii2-usuario.
Would it be possible for one of you to review these changes?

Also see dabilite/yii2-user#23 where we discuss this issue.

There should be one, great, and maintained user management module for yii2. Possible sometime a "official" one. I think yii2-usuario has the best potential to get there sometime :-)

Unable to override i18n translation config

Usuario module's bootstrap method called earlier than any custom boostrap components if you open user/login page. This makes impossible to override translation which initialized in \Da\User\Bootstrap::initTranslations.

What steps will reproduce the problem?

Create StartUp class:

class AdHocStartUp implements BootstrapInterface {
	/**
	 * @inheritDoc
	 */
	public function bootstrap($app) {
		$app->i18n->translations['usuario*'] = [
			'class' => PhpMessageSource::class,
			'basePath' => '@common/messages', // here is copy of usuario.php dictionary with translated messages
			'sourceLanguage' => 'en-US',
		];
	}
}

What is the expected result?

Translated messages from @common\messages.

What do you get instead?

Messages from modules' path + '/resources/i18n'

Any idea how to fix this?

User model overridding not working in EVENT_AFTER_LOGIN event handler

What steps will reproduce the problem?

Override User model as descibed in doc:

'container' => [
    'definitions' => [
        Da\User\Model\User::class => common\models\User::class,
    ],
],

Write event handler:

Event::on(\yii\web\User::class, \yii\web\User::EVENT_AFTER_LOGIN, function (UserEvent $event) {
			/** @var User $identity */
			$identity = $event->identity;

			/** @var Client $client */
			$client = $identity->someRelation; // FAILED

			...
		});

What is the expected result?

Working program.

What do you get instead?

I got error:

Getting unknown property: Da\User\Model\User::someRelation

yiisoft/yii2-codeception

the package yiisoft/yii2-codeception is depricated in favor of using the official yii2 module of codeception.
so should we consider migrating?

Typo rememberLoginLifeSpan should be rememberLoginLifespan

What steps will reproduce the problem?

Try autt with VK

What is the expected result?

Success auth

What do you get instead?

Getting unknown property: Da\User\Module::rememberLoginLifeSpan

In the module defined field rememberLoginLifespan (small letter s)

Can

What steps will reproduce the problem?

What is the expected result?

What do you get instead?

Make ids as unsigned integer

Primary key for user table has integer type. It cannot be negative (does not make any sense), so why not to make this field as unsigned integer?

As an administrator, impersonate other users

As an administrator allow impersonation of other user with different roles. Specs:

  • It cannot be other administrators (throw error message)
  • It must be a post
  • Impersonate action should be provided on the grid + a button on user update view
  • Create a widget to allow user to render whether is navigating impersonating a user and to allow him to get back as an administrator

Profile can't be updated because timezone validation fails

What steps will reproduce the problem?

  1. Goto user/settings
  2. Click save

What is the expected result?

Profile should be saved.

What do you get instead?

Validation error "Time zone is not valid"

I think line 75 in src/User/Model/Profile.php

if ($this->make(TimeZoneValidator::class, [$this->{$attribute}])->validate()) {

should be

if ($this->make(TimeZoneValidator::class, [$this->{$attribute}])->validate() === false) {

Broken test config for `@bower` alias

Command codecept run breaks on this:

1) ConfirmationCept: Ensure that confirmation works
 Test  tests\functional\ConfirmationCept.php


  [yii\base\InvalidParamException] The file or directory to be published does not exist: G:\xampp\htdocs\My Forks\yii2-
usuario\tests/..//vendor/**bower-asset**/bootstrap/dist

Test config defines bower alias as '@bower' => VENDOR_DIR . '/bower-asset', which is wrong. Bower assets located in VENDOR_DIR . '/bower'.

can't run on php 5.4 as yii2.0?

It seems have problem under php5.4

reported
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'

on 'user' => [
'class' => Da\User\Module::class,

It is okay under php7. yii2.0 supports php5.4 though..
any suggestions for server running php5.4 without update? Thanks!

Add option to show the generated passwords

What steps will reproduce the problem?

When user is created or registered.

What is the expected result?

Option to override default behavior

What do you get instead?

Unable to do it


Whilst is highly NOT recommended to provide the plain passwords on emails for registered or newly created users. The system should support it to allow the user do whatever they please. The reset option should be forced instead and never, ever, display passwords on emails.

usuario + AccessControl on Application throws User::identityClass must be set

I am trying to set global AccessControl on application. I have this in application configuration:

     'components' => [ ... ],

     'modules' => [
        'user' => [
            'class' => Da\User\Module::class,
        ]
    ],

    'as beforeRequest' => [
        'class' => \yii\filters\AccessControl::class,
        'ruleConfig' => [
            'class' => \Da\User\Filter\AccessRuleFilter::class,
        ],
        'rules' => [
            [ ... ],
        ],
    ],
],

It always throws User::identityClass must be set exception.

Is there any way to make it work?

Provide 2F Authentication Mechanism

Include a 2F Authentication mechanism:

  • refactor our Qrcode library
  • create 2FA library that 2amigos will control
  • add tests to 2FA library
  • implement library into usuario flow
  • add tests for 2FA with usuario

make() should pass attributes as third parameter not second

What steps will reproduce the problem?

Add VKontakte OAuth client

What is the expected result?

Success create account by use VK login

What do you get instead?

Error Unable to create an account.

I do some resarch and found troubles in some places with use make():
https://github.com/2amigos/yii2-usuario/blob/master/src/User/Service/SocialNetworkAuthenticateService.php#L92-L101

https://github.com/2amigos/yii2-usuario/blob/master/src/User/Service/SocialNetworkAuthenticateService.php#L120-L127

https://github.com/2amigos/yii2-usuario/blob/master/src/User/Service/SocialNetworkAccountConnectService.php#L81-L88

https://github.com/2amigos/yii2-usuario/blob/master/src/User/Controller/RegistrationController.php#L146-L149

Solutions:

  1. Like a some places pass attributes as third parameter(e.g. https://github.com/2amigos/yii2-usuario/blob/master/src/User/Controller/AbstractAuthItemController.php#L84 )
  2. Wrap array in array

I vote for 1st solution πŸ‘

Provide the ability for a user to delete its very own account

Specs:

  • Should be configurable at the Module level
  • The action should fire events so developers could programmatically develop their very own action log systems.

Example actions to be taken on before or after delete events:

a) on before delete the user instance that is about to remove himself from the system will be passed to the event object, so the developer can easily stop its plans, clone its data to a different tables (for example a CRM system, so team could follow up on the reasons why he wishes to leave the system).

b) another scenario would be to report the sys admin about the action of the user

Add instructions to add rbac migrationPath [docs]

Add RBAC migrations to migrationPath fin console app config:

'controllerMap' => [
    'migrate' => [
        'class' => \yii\console\controllers\MigrateController::class,
        'migrationPath' => [
            '@app/migrations',
            '@yii/rbac/migrations', // <<< It's very useful
        ],
        'migrationNamespaces' => [
            'Da\User\Migration',
        ],
    ],
],

I forget apply rbac migrations, usuario work success. but yii2-debug was fail with stacktrace:

2017-08-13 15:22:43 [127.0.0.1][1][-][warning][yii\log\Dispatcher::dispatch] Unable to send log via yii\debug\LogTarget: Exception (Database Exception) 'yii\db\Exception' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "auth_assignment" does not exist
LINE 1: SELECT "b".* FROM "auth_assignment" "a", "auth_item" "b" WHE...
                          ^
The SQL being executed was: SELECT "b".* FROM "auth_assignment" "a", "auth_item" "b" WHERE ("a"."item_name"="b"."name") AND ("a"."user_id"='1') AND ("b"."type"=1)' 

in app\vendor\yiisoft\yii2\db\Schema.php:636

Stack trace:
#0 app\vendor\yiisoft\yii2\db\Command.php(930): yii\db\Schema->convertException(Object(PDOException), 'SELECT "b".* FR...')
#1 app\vendor\yiisoft\yii2\db\Command.php(362): yii\db\Command->queryInternal('fetchAll', NULL)
#2 app\vendor\yiisoft\yii2\db\Query.php(213): yii\db\Command->queryAll()
#3 app\vendor\yiisoft\yii2\rbac\DbManager.php(470): yii\db\Query->all(Object(yii\db\Connection))
#4 app\vendor\yiisoft\yii2-debug\panels\UserPanel.php(66): yii\rbac\DbManager->getRolesByUser(1)
#5 app\vendor\yiisoft\yii2-debug\LogTarget.php(54): yii\debug\panels\UserPanel->save()
#6 app\vendor\yiisoft\yii2-debug\LogTarget.php(118): yii\debug\LogTarget->export()
#7 app\vendor\yiisoft\yii2\log\Dispatcher.php(188): yii\debug\LogTarget->collect(Array, true)
#8 app\vendor\yiisoft\yii2\log\Logger.php(177): yii\log\Dispatcher->dispatch(Array, true)
#9 [internal function]: yii\log\Logger->flush(true)
#10 {main}

Column not found: 1054 Unknown column 'status' in 'where clause'

I used the instructions at http://yii2-usuario.readthedocs.io/en/latest/ and http://yii2-usuario.readthedocs.io/en/latest/installation/advanced-application-template/ using the standard yii2 advanced template. I created a database, deleted m130524_201442_init.php and entered the migrations manually from a command line. I then configured the extension and then entered the following URL in my browser: http://localhost/myproject/backend/web/index.php

I expected to see a login or a redirect.

Instead, I got a Database Exception – yii\db\Exception .

Incorrect event type in RegistrationController?

What steps will reproduce the problem?

Try to listen to UserEvent::EVENT_AFTER_REGISTER at RegistrationController

Event::On(
    RegistrationController::class,
    UserEvent::EVENT_AFTER_REGISTER,
    function (UserEvent $event) {
    }
);

What is the expected result?

$event inside anonymous function is instance of UserEvent

What do you get instead?

$event is FormEvent

Additional comments

this range in RegistrationController:

  • first highlighted line - creation of FormEvent
  • last highlighted line - trigger of UserEvent::EVENT_AFTER_REGISTER with FormEvent instead of UserEvent

so, we'll get an error despite our actions to be taken perfectly according to documentation:

All these events receive an instance of Da\User\Event\UserEvent. The Event receives an instance of a Da\Model\User class that you could use for whatever logic you wish to implement.

Invalid login url in module bootstrap

It seems in bootstrap file you have defined old auth action rule

$di->set(
     'yii\web\User',
     [
          'enableAutoLogin' => true,
          'loginUrl' => ['/user/auth/login'],
          'identityClass' => $di->get(ClassMapHelper::class)->get(User::class),
     ]
);

'loginUrl' => ['/user/auth/login'],

must be changed to

'loginUrl' => ['/user/security/login'],

[New setup] Migration error

What steps will reproduce the problem?

php yii migrate

What is the expected result?

Success :)

What do you get instead?

Yii Migration Tool (based on Yii v2.0.13-dev)

Creating migration history table "api_migration"...Done.
Total 5 new migrations to be applied:
	Da\User\Migration\m000000_000001_create_user_table
	Da\User\Migration\m000000_000002_create_profile_table
	Da\User\Migration\m000000_000003_create_social_account_table
	Da\User\Migration\m000000_000004_create_token_table
	Da\User\Migration\m000000_000005_add_last_login_at

Apply the above migrations? (yes|no) [no]:yes
*** applying Da\User\Migration\m000000_000001_create_user_table
    > create table {{%user}} ... done (time: 0.007s)
    > create unique index idx_user_username on {{%user}} (username) ... done (time: 0.006s)
    > create unique index idx_user_email on {{%user}} (email) ... done (time: 0.007s)
*** applied Da\User\Migration\m000000_000001_create_user_table (time: 0.026s)

*** applying Da\User\Migration\m000000_000002_create_profile_table
    > create table {{%profile}} ... done (time: 0.008s)
    > add foreign key fk_profile_user: {{%profile}} (user_id) references {{%user}} (id) ... done (time: 0.014s)
*** applied Da\User\Migration\m000000_000002_create_profile_table (time: 0.027s)

*** applying Da\User\Migration\m000000_000003_create_social_account_table
    > create table {{%social_account}} ... done (time: 0.006s)
    > create unique index idx_social_account_provider_client_id on {{%social_account}} (provider,client_id) ... done (time: 0.009s)
    > create unique index idx_social_account_code on {{%social_account}} (code) ... done (time: 0.018s)
    > add foreign key fk_social_account_user: {{%social_account}} (user_id) references {{%user}} (id) ...Exception: SQLSTATE[HY000]: General error: 1005 Can't create table 'db646148637.#sql-59d_6d902d' (errno: 121)
The SQL being executed was: ALTER TABLE `api_social_account` ADD CONSTRAINT `fk_social_account_user` FOREIGN KEY (`user_id`) REFERENCES `api_user` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT (/homepages/htdocs/yii/vendor/yiisoft/yii2/db/Schema.php:595)
#0 /homepages/31/d646147665/htdocs/yii/vendor/yiisoft/yii2/db/Command.php(973): yii\db\Schema->convertException(Object(PDOException), 'ALTER TABLE `ap...')
#1 /homepages/htdocs/yii/vendor/yiisoft/yii2/db/Migration.php(446): yii\db\Command->execute()
#2 /homepages/htdocs/yii/vendor/2amigos/yii2-usuario/src/User/Migration/m000000_000003_create_social_account_table.php(53): yii\db\Migration->addForeignKey('fk_social_accou...', '{{%social_accou...', 'user_id', '{{%user}}', 'id', 'CASCADE', 'RESTRICT')
#3 /homepages/htdocs/yii/vendor/yiisoft/yii2/db/Migration.php(115): Da\User\Migration\m000000_000003_create_social_account_table->safeUp()
#4 /homepages/htdocs/yii/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(713): yii\db\Migration->up()
#5 /homepages/htdocs/yii/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(193): yii\console\controllers\BaseMigrateController->migrateUp('Da\\User\\Migrati...')
#6 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
#7 /homepages/htdocs/yii/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#8 /homepages/htdocs/yii/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#9 /homepages/htdocs/yii/vendor/yiisoft/yii2/console/Controller.php(135): yii\base\Controller->runAction('', Array)
#10 /homepages/htdocs/yii/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('', Array)
#11 /homepages/htdocs/yii/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('migrate', Array)
#12 /homepages/htdocs/yii/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('migrate', Array)
#13 /homepages/htdocs/yii/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#14 /homepages/htdocs/yii/api/yii(15): yii\base\Application->run()
#15 {main}
*** failed to apply Da\User\Migration\m000000_000003_create_social_account_table (time: 0.046s)


2 from 5 migrations were applied.

Migraion failed: Invalid path alias: @Da\\User\\Migration

Advanced template, no any migrations applied before.

What steps will reproduce the problem?

yii migrate --migrationNamespaces=Da\User\Migration

What is the expected result?

Applied migration.

What do you get instead?

Yii Migration Tool (based on Yii v2.0.12)

Exception 'yii\base\InvalidParamException' with message 'Invalid path alias: @da\User\Migration'

Showing user profile error

What steps will reproduce the problem?

Login and then go to the user profile page /user/2 (2 is the user id)

What is the expected result?

Display the user profile

What do you get instead?

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'

at the line 70: $profile = $this->profileQuery->whereId($id)->one();
file: vendor\2amigos\yii2-usuario\src\User\Controller\ProfileController.php

Error run migrations

What steps will reproduce the problem?

deploy app in my server and i execute migrate command

What is the expected result?

migrations migrate

What do you get instead?

The following error :

[RuntimeException]                                                                                                                           
  Error: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes                      
  The SQL being executed was: ALTER TABLE `social_account` ADD UNIQUE INDEX `idx_social_account_provider_client_id` (`provider`, `client_id`) 

This happen because the migrations hasn't set tableOptions to innodb, then it use engine by default.

Sometimes i can't change engine by default in my server, it posible include some like this one :

https://github.com/dektrium/yii2-user/blob/master/migrations/Migration.php#L39

Profile query search by user_id

In Da\User\Query\ProfileQuery

public function whereId($id)
    {
        return $this->andWhere(['user_id' => $id]);
    }

Instead of

public function whereId($id)
    {
        return $this->andWhere(['id' => $id]);
    }

Provide google captcha mechanism

In order to avoid brute force attacks, provide google captcha mechanism with configurable max number of failed attempts allowed.

Getting errors when encoded with IonCube

I have to deliver a Yii2 app to a client encoded with IonCube. Unfortunately it's not enough to encode my code, but I also have to encode the whole /vendor folder as well, because otherwise the default parameters won't work. See more about it here: http://www.yiiframework.com/forum/index.php/topic/34266-strange-behavior-of-yii-when-the-code-is-encoded-ioncube/

When I encode the entire project I get an error related to yii2-usuario, see the attached screenshot.
kepernyokep errol 2017-08-11 16-38-38

Creating users from console not working

Can't create user from console. Get error "Please fix following errors:" without any error messages.

$ yii user/create [email protected] admin
Please fix following errors:
--> empty line here <--

Probably because I override model classes (only table names changed).

public static function tableName()

Extending RegistrationForm requires extending User

Hi,
I've had a requirement to add captcha to the RegistrationForm and noticed that RegistrationController passes all form attributes to the User Model. So I needed to extend also User model with the same (dummy) captcha attribute. Is it possible to avoid this overhead and for example ignore attributes that are present in the RegistrationForm when they do not exist in the User model?
Thank you.

Add `last_login_at` field to user table

I think it's a useful feature to have a last_login_at field in the user table. Dektrium also added this functionality to his user module this January. I'm happy to implement it and send a PR if you also think it's a good idea.

How to create a user without accessing the administrator panel

Before asking I need to explain (hoping in a clear and concise way) my problem.
In my project I have an Anagrafica model (with anagraphic info such as email, name, surname..) that is connected to the user table. In the user table I have added a column with a foreign key pointing to the primary key of my model (idanagrafica in the anagrafica table).
I've also created a model (called Utente) that extends Da\User\Model\User adding functions and relations.
I need that the actionCreate of the Anagrafica model can also create a user just like with user/admin/create.
I think I have to create in the UtenteController a function createUtente similar to the user/admin/create that will simply create a new user with 3 parameters (the email, the idanagrafica of my Anagrafica model and a password) without redirect.
I'm quite new to yii2 and I have to admit that I don't know how to modify your function in order to reach that goal.

Thank you in advance for any help (hoping my explanation is clear enough)

Cannot add permission into a role

What steps will reproduce the problem?

In the RBAC management, I can create permissions and roles. I saw that each permission can have its own child permissions and each role can have its own child roles. But I can not find the way to add permission into a role

Provide quick option for any user to reset its password

For systems where password recovery is not allowed, provide the administrator with the option to send a recovery token for the user to reset its password.

The reason behind sending a token to begin reset process instead of sending passwords throughout mail is because sending plain passwords is a huge security risk.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.