public Repository(IMiniSessionService manager = null) { _sessionManager = manager ?? ServiceLocator.Current.GetInstance <IMiniSessionService>(); // Make sure the session is open _sessionManager.OpenSession(); _currentSession = _sessionManager.Session; }
private bool GetOperationsInner() { var w = System.Diagnostics.Stopwatch.StartNew(); lock (_operationsLock) { if (_operationsDictionary != null) { return(true); } _sessionService.OpenSession(); // Load & Cache Operations var operations = _sessionService.Session.Query <ApplicationOperation>() .FetchMany(a => a.Permissions) .WithOptions(options => { options.SetCacheable(true); options.SetCacheRegion("security"); }) .ToList(); // ThereBeDragonsHere! - Hack to lazy initialize the Roles var roles = operations.SelectMany(o => o.Permissions.Select(p => p.Roles)).ToList(); var localOperationsDictionary = new ConcurrentDictionary <string, List <ApplicationOperation> >(); foreach (var operation in operations) { var key = GetOperationDictionaryKey(operation); if (!localOperationsDictionary.ContainsKey(key)) { var list = new List <ApplicationOperation> { operation }; localOperationsDictionary.TryAdd(key, list); } else { var list = localOperationsDictionary[key]; if (!list.Contains(operation)) { list.Add(operation); } } } _operationsDictionary = localOperationsDictionary; } w.Stop(); LogManager.GetLogger(GetType()).Debug($"Got all Operations/Permissions/Roles in {w.Elapsed}"); return(true); }
public IActionResult Token(AuthRequest authRequest) { using (var session = _manager.OpenSession()) { var success = IdentityHelper.SignIn(authRequest.Username, authRequest.Password, false); ActionResult response = new EmptyResult(); if (success == true) { var userInfo = IdentityHelper.GetApplicationUserByName(authRequest.Username); var claims = userInfo.Permissions.Select(p => new Claim(Model.ClaimTypes.Permission, p.Name)).ToList(); claims.Add(new Claim(ClaimTypes.Name, userInfo.UserName)); if (!string.IsNullOrWhiteSpace(userInfo.Email)) { claims.Add(new Claim(Model.ClaimTypes.Email, userInfo.Email)); } var userRoles = userInfo.Roles.Select(r => new Claim(ClaimTypes.Role, r.Name)); claims.AddRange(userRoles); var key = EncodingUtilities.StringToByteArray(_jwtKey, "ascii"); var signingCredential = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature); var tokenDescriptor = new JwtSecurityToken(null, null, claims, expires: _jwtExpirationTime, signingCredentials: signingCredential); var token = new JwtSecurityTokenHandler().WriteToken(tokenDescriptor); var result = new { idToken = token, expiresIn = tokenDescriptor.ValidTo, }; response = Ok(result); } _manager.CloseSession(); return(response); } }
private ISession GetCurrentSession() { _sessionManager.OpenSession(); return(_sessionManager.Session); }