public void InsertUser([FromBody] User user) { var claims = authenticationHelper.GetClaimsForRequest(User, Request); user.Id = ControllerHelper.GetCurrentUserId(); user.UserExtId = ControllerHelper.GetFromClaim("/identity/claims/e-id/userExtId"); user.Claims = new JObject { { "claims", JArray.FromObject(claims) } }; user.EiamRoles = ControllerHelper.GetMgntRoleFromClaim(); user.IsInternalUser = ControllerHelper.IsInternalUser(); if (user.IsInternalUser) { user.FamilyName = ControllerHelper.GetFromClaim("/identity/claims/surname"); user.FirstName = ControllerHelper.GetFromClaim("/identity/claims/givenname"); user.EmailAddress = ControllerHelper.GetFromClaim("/identity/claims/emailaddress"); } userDataAccess.InsertUser(user); }
public Identity GetIdentity(HttpRequestMessage request, IPrincipal user, bool isPublicClient) { var userId = controllerHelper.GetCurrentUserId(); var claims = authenticationHelper.GetClaimsForRequest(user, request); if (!HasValidMandant(claims)) { Log.Warning("User hat noch keinen Antrag gestellt"); throw new AuthenticationException("User hat noch keinen Antrag gestellt"); } var isNewUser = !TryUpdateUser(userId, claims); if (isNewUser) { return(new Identity { IssuedClaims = claims.ToArray(), Roles = new[] { isPublicClient ? controllerHelper.IsInternalUser() ? AccessRoles.RoleBVW : AccessRoles.RoleOe2 : controllerHelper.GetMgntRoleFromClaim() }, IssuedAccessTokens = new string[] { }, AuthStatus = AuthStatus.NeuerBenutzer, RedirectUrl = GetReturnUrl(AuthStatus.NeuerBenutzer, isPublicClient) }); } var role = isPublicClient ? userDataAccess.GetRoleForClient(userId) : userDataAccess.GetEiamRoles(userId); var authStatus = IsValidAuthRole(role, isPublicClient); // Fehlerhafte Rolle oder Anmeldung if (authStatus == AuthStatus.KeineRolleDefiniert) { Log.Error( "Es wurde für den Benutzer keine Rolle definiert in der Datenbank oder Authentifikation hat fehlgeschlagen UserId:={UserId}, AuthStatus={AuthStatus}", userId, authStatus); throw new AuthenticationException( $"Es wurde für den Benutzer keine Rolle definiert in der Datenbank oder Authentifikation hat fehlgeschlagen UserId:={userId}, AuthStatus='{authStatus}'"); } var accessTokens = userDataAccess.GetTokensDesUser(userId); var identity = new Identity { IssuedClaims = claims.ToArray(), Roles = new[] { role }, IssuedAccessTokens = accessTokens, AuthStatus = authStatus, RedirectUrl = GetReturnUrl(authStatus, isPublicClient) }; AddAppRolesAndFeatures(userId, identity); try { Log.Debug("(AuthController:GetClaims()): {CLAIMS}", JsonConvert.SerializeObject(identity, Formatting.Indented)); } catch { // ignored } return(identity); }