public async Task <ActionResult <string> > AuthenticateWebAdminAsync([FromBody] AuthenticateModelWebAdmin model) { var authenticateResponse = await _accountService.AuthenticateAsync(model.username, model.password); if (authenticateResponse == null) { return(null); } return(Ok(authenticateResponse)); }
public async Task <string> AuthenticateAsync(AuthenticateModelWebAdmin model) { FirebaseToken decodedToken = null; try { decodedToken = await FirebaseAuth.DefaultInstance .VerifyIdTokenAsync(model.IdToken); } catch (Exception) { throw new FirebaseException(HttpStatusCode.Forbidden, "Unauthorized access to TradeZoneMap!!!"); } string firebaseUid = decodedToken.Uid; string email = ""; string phoneNumber = ""; string imageUrl = ""; decodedToken.Claims.TryGetValue("firebase", out object tmp); decodedToken.Claims.TryGetValue("email", out tmp); if (tmp != null) { email = tmp.ToString(); } decodedToken.Claims.TryGetValue("phoneNumber", out tmp); if (tmp != null) { phoneNumber = tmp.ToString(); } decodedToken.Claims.TryGetValue("picture", out tmp); if (tmp != null) { imageUrl = tmp.ToString(); } decodedToken.Claims.TryGetValue("name", out tmp); string name = tmp.ToString(); Account account = await _unitOfWork.Repository <Account>().GetAll().Where(x => x.Email == email && x.Active == true).FirstOrDefaultAsync(); if (account == null) { throw new FirebaseException(HttpStatusCode.Forbidden, "Unauthorized access to TradeZoneMap!!!"); } else { account.FcmToken = model.FcmToken; if (string.IsNullOrEmpty(account.Fullname)) { account.Fullname = name; } if (string.IsNullOrEmpty(account.PhoneNumber)) { account.PhoneNumber = phoneNumber; } if (string.IsNullOrEmpty(account.ImageUrl)) { account.ImageUrl = imageUrl; } await _unitOfWork.Repository <Account>().UpdateGuid(account, account.Id); await _unitOfWork.CommitAsync(); } var jwt = GenerateJwtToken(account); return(jwt); }