2019-10-07 08:14:47 -06:00
|
|
|
// Copyright (c) Mainflux
|
2018-08-26 13:15:48 +02:00
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
2018-05-10 23:53:25 +02:00
|
|
|
package users
|
|
|
|
|
2019-07-18 15:01:09 +02:00
|
|
|
import (
|
|
|
|
"context"
|
2019-07-19 12:28:45 +02:00
|
|
|
"regexp"
|
|
|
|
"strings"
|
|
|
|
)
|
2019-07-18 15:01:09 +02:00
|
|
|
|
2019-07-19 12:28:45 +02:00
|
|
|
var (
|
|
|
|
userRegexp = regexp.MustCompile("^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+$")
|
|
|
|
hostRegexp = regexp.MustCompile("^[^\\s]+\\.[^\\s]+$")
|
|
|
|
userDotRegexp = regexp.MustCompile("(^[.]{1})|([.]{1}$)|([.]{2,})")
|
2019-07-18 15:01:09 +02:00
|
|
|
)
|
2018-05-10 23:53:25 +02:00
|
|
|
|
2018-05-11 01:00:10 +02:00
|
|
|
// User represents a Mainflux user account. Each user is identified given its
|
|
|
|
// email and password.
|
|
|
|
type User struct {
|
|
|
|
Email string
|
|
|
|
Password string
|
2019-09-28 11:15:41 +00:00
|
|
|
Metadata map[string]interface{}
|
2018-05-10 23:53:25 +02:00
|
|
|
}
|
|
|
|
|
2018-05-11 01:00:10 +02:00
|
|
|
// Validate returns an error if user representation is invalid.
|
|
|
|
func (u User) Validate() error {
|
|
|
|
if u.Email == "" || u.Password == "" {
|
2018-05-10 23:53:25 +02:00
|
|
|
return ErrMalformedEntity
|
|
|
|
}
|
|
|
|
|
2019-07-19 12:28:45 +02:00
|
|
|
if !isEmail(u.Email) {
|
2018-05-11 01:00:10 +02:00
|
|
|
return ErrMalformedEntity
|
2018-05-10 23:53:25 +02:00
|
|
|
}
|
|
|
|
|
2018-05-11 01:00:10 +02:00
|
|
|
return nil
|
2018-05-10 23:53:25 +02:00
|
|
|
}
|
|
|
|
|
2018-05-11 01:00:10 +02:00
|
|
|
// UserRepository specifies an account persistence API.
|
|
|
|
type UserRepository interface {
|
|
|
|
// Save persists the user account. A non-nil error is returned to indicate
|
|
|
|
// operation failure.
|
2019-07-18 15:01:09 +02:00
|
|
|
Save(context.Context, User) error
|
2018-05-11 01:00:10 +02:00
|
|
|
|
2019-10-31 16:36:19 +01:00
|
|
|
// Update updates the user metadata.
|
|
|
|
UpdateUser(context.Context, User) error
|
|
|
|
|
2018-05-17 20:17:02 +02:00
|
|
|
// RetrieveByID retrieves user by its unique identifier (i.e. email).
|
2019-07-18 15:01:09 +02:00
|
|
|
RetrieveByID(context.Context, string) (User, error)
|
MF-532 - Password reset (#873)
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* when metadata is not set dont save 'null' string
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* when metadata is not set dont save 'null' string
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* when metadata is not set dont save 'null' string
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change metadata type, add error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change metadata type, add error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change metadata type, add error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove extra char
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove extra char
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove extra char
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* few small fixes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* few small fixes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* few small fixes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix identityRes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix identityRes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix identityRes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* mail
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* mail
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reset request endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reset request endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reset request endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token methods
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token methods
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token methods
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding reset passw endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding reset passw endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding reset passw endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add logic for token verifying
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add logic for token verifying
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add logic for token verifying
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove mail from main
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove mail from main
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove mail from main
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* token and passwd update logic
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* token and passwd update logic
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* token and passwd update logic
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize mailing code
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comments for password reset flow
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comments for password reset flow
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change struct members to private
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add space
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add space
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add space
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* revert back changes used for testing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* revert back changes used for testing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* revert back changes used for testing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding swagger docs for reset passw
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding swagger docs for reset passw
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix imports and some typos
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix imports and some typos
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding swagger docs for reset passw
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* addint test and update swagger for pass reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* addint test and update swagger for pass reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* addint test and update swagger for pass reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding test for endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding test for endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding test for endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding test for endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding endpoint test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding endpoint test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding endpoint test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change token generation
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change token generation
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change token generation
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize and change token gen
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize and change token gen
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize and change token gen
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* addint token and mail
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token env
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token env
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix error reporting
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix some comments and update readme
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix some comments and update readme
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix some comments and update readme
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update readme
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix problmes due merge
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix problmes due merge
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix typos
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix typos
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add trusted certificates
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add endpoint for password change of currently authenticated user
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add env variable for conf reset endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add metadata to users
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default value for metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* when metadata is not set dont save 'null' string
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change metadata type, add error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove extra char
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* few small fixes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix identityRes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add users metadata
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* password reset, sketching
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reset request endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding token endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding reset passw endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add logic for token verifying
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove mail from main
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add space
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* revert back changes used for testing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize endpoints, extract host for link from Referer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* addint test and update swagger for pass reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding endpoint test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix some comments and update readme
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add env variable for conf reset endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix tests
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving some style comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor fixes due to bad merge
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix problem with unsigned commits
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix problem with unsigned commits
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix call to users.New
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix call to users.New
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* rename file
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* rename to email.go
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* additional comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* additional comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email util
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email util
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email util
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email util
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove debug bin
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add driver conf for mail
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor email
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix failing tests
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add testify
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add token conf
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* configurable email template
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix missing var
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add env for email template file
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add env for email template file
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix tests
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix test
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* revert to master
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove dev container
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fixes, typos, namings
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix typo
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* resolving comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add line
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* return err from email New()
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change MF_TOKEN_RESET_ENDPOINT
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add and remove env vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* separate password logic into two methods Change and Reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove blank line
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update docs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* dont use camel case
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize email template for passw reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* reorganize email template for passw reset
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
2019-10-22 14:53:14 +02:00
|
|
|
|
|
|
|
// UpdatePassword updates password for user with given email
|
|
|
|
UpdatePassword(_ context.Context, email, password string) error
|
2018-05-10 23:53:25 +02:00
|
|
|
}
|
2019-07-19 12:28:45 +02:00
|
|
|
|
|
|
|
func isEmail(email string) bool {
|
|
|
|
if len(email) < 6 || len(email) > 254 {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
at := strings.LastIndex(email, "@")
|
|
|
|
if at <= 0 || at > len(email)-3 {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
user := email[:at]
|
|
|
|
host := email[at+1:]
|
|
|
|
|
|
|
|
if len(user) > 64 {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
if userDotRegexp.MatchString(user) || !userRegexp.MatchString(user) || !hostRegexp.MatchString(host) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
return true
|
|
|
|
}
|