/// <summary> /// Add refresh token for the user to MobileRefreshTokens /// </summary> /// <param name="token"></param> /// <returns></returns> public async Task <int> AddRefreshToken(MobileRefreshTokens token) { try { var existingToken = _scEntity.MobileRefreshTokens.Where(r => r.UserCode == token.UserCode && r.ClientId == token.ClientId).SingleOrDefault(); if (existingToken != null) { var result = await RemoveRefreshToken(existingToken.MobileRefreshTokenId.ToString()); } _scEntity.MobileRefreshTokens.Add(token); if (await _scEntity.SaveChangesAsync() > 0) { return(token.MobileRefreshTokenId); } else { return(-1); } } catch (Exception ex) { Exception excep = new Exception("Exception occured in AuthRepository.AddRefreshToken." + ex.Message); throw excep; } }
/// <summary> /// Sets the requires parameters which sends along with the bearer token. /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task CreateAsync(AuthenticationTokenCreateContext context) { try { var clientid = context.Ticket.Properties.Dictionary["as:client_id"]; var createdby = context.Ticket.Properties.Dictionary["userName"]; if (string.IsNullOrEmpty(clientid)) { return; } _repo = new AuthRepository(new SCMobile()); var refreshTokenLifeTime = context.OwinContext.Get <string>("as:clientRefreshTokenLifeTime"); var IssuedUtc = context.OwinContext.Get <DateTime>("as:issuedUtc"); var ExpiresUtc = context.OwinContext.Get <DateTime>("as:expiresUtc"); var token = new MobileRefreshTokens() { CreatedBy = createdby, CreatedDate = DateTime.Now, ModifiedBy = createdby, ModifiedDate = DateTime.Now, ClientId = clientid, UserCode = context.Ticket.Identity.Name, IssuedUtc = IssuedUtc, ExpiresUtc = ExpiresUtc }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); var result = await _repo.AddRefreshToken(token); if (result > 0) { context.SetToken(result.ToString()); } } catch (Exception ex) { Exception excep = new Exception("Exception occured in SimpleRefreshTokenProvider.CreateAsync method." + ex.Message); throw excep; } }