Пример #1
0
        public async Task SendOtp(string mobileNumber)
        {
            int otp = 123456;
            //int otp = new Random().Next(100000, 999999); // random OTP

            SharedCollectionDocument <UserAuthModel> userAuthDocument = await DbService.GetDocumentByKeyAsyc <UserAuthModel>(mobileNumber, SecurityAppSettings.ServiceSettings.DocumentTypes.UserAuth);

            if (userAuthDocument == null)
            {
                UserAuthModel user = new UserAuthModel()
                {
                    UserName     = mobileNumber,
                    PasswordHash = PasswordService.DefaultPassword,
                    Otp          = otp,
                    RefreshToken = TokenService.GenerateRefreshToken(),
                };

                SharedCollectionDocument <UserAuthModel> document = await DbService.CreateDocumentAsync(user.UserName, user, SecurityAppSettings.ServiceSettings.DocumentTypes.UserAuth);
            }
            else
            {
                userAuthDocument.Model.Otp = otp;
                await DbService.ReplaceDocumentAsync(userAuthDocument);
            }

            string appHash = CacheService.AndroidSignatureHash;
            string message = String.Format(SmsManager.OtpTemplate, otp, appHash);

            SmsManager.SendSms(mobileNumber, message);
        }
Пример #2
0
        public SharedCollectionDocument <TModel> CopyModel <TModel>(SharedCollectionDocument <TModel> source,
                                                                    SharedCollectionDocument <TModel> destination, TModel model, string key)
        {
            destination.Model        = model;
            destination.Key          = key;
            destination.DocumentType = source.DocumentType;
            destination.Id           = source.Id;
            destination.SelfLink     = source.SelfLink;

            return(destination);
        }
Пример #3
0
        public async Task <SharedCollectionDocument <TModel> > CreateDocumentAsync <TModel>(string key, TModel model, string documentType)
        {
            SharedCollectionDocument <TModel> document = new SharedCollectionDocument <TModel>()
            {
                Id           = key == documentType ? key : null,
                Key          = key,
                DocumentType = documentType,
                Model        = model
            };

            return(await CreateDocumentAsync(document));
        }
Пример #4
0
        public async Task <UserProfileModel> Register(RegisterUserModel model)
        {
            SharedCollectionDocument <UserProfileModel> profileDocument = await DbService.GetDocumentByKeyAsyc <UserProfileModel>(model.UserName, SecurityAppSettings.ServiceSettings.DocumentTypes.UserProfile);

            UserProfileModel profileModel = profileDocument.Model;

            profileModel.FirstName    = model.FirstName;
            profileModel.LastName     = model.LastName;
            profileModel.IsRegistered = true;

            await DbService.ReplaceDocumentAsync(profileDocument);

            return(profileModel);
        }
Пример #5
0
        public async Task <UserProfileModel> Validate(LoginModel login)
        {
            // check user name and password from database
            SharedCollectionDocument <UserAuthModel> userAuthDocument = await DbService.GetDocumentByKeyAsyc <UserAuthModel>(login.UserName, SecurityAppSettings.ServiceSettings.DocumentTypes.UserAuth);

            if (userAuthDocument == null)
            {
                throw new NTException(SecurityMessages.InvalidUsernamePassword);
            }

            bool result = PasswordService.VerifyHashedPassword(userAuthDocument.Model.PasswordHash, login.UserPassword);

            if (!result)
            {
                throw new NTException(SecurityMessages.InvalidUsernamePassword);
            }

            return(await CreateToken(login.UserName, userAuthDocument));
        }
Пример #6
0
        public async Task <UserProfileModel> ValidateOtp(LoginModel login)
        {
            SharedCollectionDocument <UserAuthModel> userAuthDocument = await DbService.GetDocumentByKeyAsyc <UserAuthModel>(login.UserName, SecurityAppSettings.ServiceSettings.DocumentTypes.UserAuth);

            if (userAuthDocument == null)
            {
                throw new NTException(SecurityMessages.InvalidMobileNumber);
            }

            if (userAuthDocument.Model.Otp != login.Otp)
            {
                throw new NTException(SecurityMessages.InvalidOtp);
            }

            UserProfileModel userProfile = await ProfileGet(userAuthDocument.Model.UserName);

            if (userProfile == null)
            {
                userProfile = new UserProfileModel()
                {
                    UserId       = Guid.NewGuid().ToString(),
                    UserName     = userAuthDocument.Model.UserName,
                    FirstName    = string.Empty,
                    LastName     = string.Empty,
                    IsRegistered = false,
                    CompanyId    = 0,
                    Roles        = new List <RoleModel>()
                    {
                        new RoleModel()
                        {
                            Name = "Player"
                        }
                    }
                };
                await DbService.CreateDocumentAsync(userProfile.UserName, userProfile, SecurityAppSettings.ServiceSettings.DocumentTypes.UserProfile);
            }
            return(await CreateToken(userProfile, userAuthDocument));
        }
Пример #7
0
 public async Task <Document> DeleteDocumentAsync <TModel>(SharedCollectionDocument <TModel> document)
 => await DbContext.Client.DeleteDocumentAsync(document.SelfLink);
Пример #8
0
 public async Task ReplaceDocumentAsync <TModel>(string id, SharedCollectionDocument <TModel> document)
 => await DbContext.Client.ReplaceDocumentAsync(CreateDocumentUri(defaultCollectionId, id), document);
Пример #9
0
 public async Task ReplaceDocumentAsync <TModel>(SharedCollectionDocument <TModel> document)
 => await DbContext.Client.ReplaceDocumentAsync(document.SelfLink, document);
Пример #10
0
        public async Task <SharedCollectionDocument <TModel> > CreateDocumentAsync <TModel>(SharedCollectionDocument <TModel> document)
        {
            Document doc = await DbContext.Client.CreateDocumentAsync(CreateDocumentCollectionUri(defaultCollectionId), document);

            document.Id       = doc.Id;
            document.SelfLink = doc.SelfLink;

            return(document);
        }
Пример #11
0
        private async Task <UserProfileModel> CreateToken(UserProfileModel userProfile, SharedCollectionDocument <UserAuthModel> userAuthDocument)
        {
            // creating tokens
            string jwtToken = TokenService.GenerateJwtToken(userProfile);

            // if no refresh token exists, then create one
            if (string.IsNullOrEmpty(userAuthDocument.Model.RefreshToken))
            {
                userAuthDocument.Model.RefreshToken = TokenService.GenerateRefreshToken();
                await DbService.ReplaceDocumentAsync(userAuthDocument);
            }

            TokenService.SetTokenHeader(jwtToken, userAuthDocument.Model.RefreshToken);
            return(userProfile);
        }
Пример #12
0
        private async Task <UserProfileModel> CreateToken(string userName, SharedCollectionDocument <UserAuthModel> userAuthDocument)
        {
            UserProfileModel userProfile = await ProfileGet(userName);

            return(await CreateToken(userProfile, userAuthDocument));
        }