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); }
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); }
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)); }
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); }
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)); }
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)); }
public async Task <Document> DeleteDocumentAsync <TModel>(SharedCollectionDocument <TModel> document) => await DbContext.Client.DeleteDocumentAsync(document.SelfLink);
public async Task ReplaceDocumentAsync <TModel>(string id, SharedCollectionDocument <TModel> document) => await DbContext.Client.ReplaceDocumentAsync(CreateDocumentUri(defaultCollectionId, id), document);
public async Task ReplaceDocumentAsync <TModel>(SharedCollectionDocument <TModel> document) => await DbContext.Client.ReplaceDocumentAsync(document.SelfLink, document);
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); }
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); }
private async Task <UserProfileModel> CreateToken(string userName, SharedCollectionDocument <UserAuthModel> userAuthDocument) { UserProfileModel userProfile = await ProfileGet(userName); return(await CreateToken(userProfile, userAuthDocument)); }