ChangeNickname(int uid, string name) { bool success = false; Datamodel.User user = null; if (Datamodel.User.FetchById(ref user, uid)) { user.name = name; if (Datamodel.User.Store(user)) { logger.Info($"Changed name of user {uid} to {name}"); success = true; } else { logger.Error("Failed to update name of user " + $"{uid} to {name}."); } } else { logger.Error($"Could not change name: no user with id {uid}."); } if (uid == GetUser().profile.id) { GetUser().RefreshProfile(); } return(new ANWI.Messaging.ConfirmUpdate( typeof(ANWI.Messaging.Request), success, uid)); }
SetPrimaryRate(int uid, int rid) { bool success = false; Datamodel.User u = null; if (Datamodel.User.FetchById(ref u, uid)) { u.rate = rid; if (Datamodel.User.Store(u)) { logger.Info($"Updated primary rate on user {uid} to {rid}"); success = true; } else { logger.Error("Failed to update primary rate on user" + $" {uid} to {rid}"); } } else { logger.Error("Could not set primary rate: no user with" + $" id {uid} found"); } if (uid == GetUser().profile.id) { GetUser().RefreshProfile(); } return(new ANWI.Messaging.ConfirmUpdate( typeof(ANWI.Messaging.Request), success, uid)); }
/// <summary> /// Changes the rank of a user /// </summary> /// <param name="p"></param> /// <returns></returns> private ANWI.Messaging.IMessagePayload ChangeRank(int uid, int rid) { bool success = false; Datamodel.User u = null; if (Datamodel.User.FetchById(ref u, uid)) { u.rank = rid; if (Datamodel.User.Store(u)) { logger.Info($"Updated rank of user {uid} to {rid}"); success = true; } else { logger.Error($"Failed to update rank of user {uid}"); } } else { logger.Error("Could not set rank: no user with id {uid} found"); } if (uid == GetUser().profile.id) { GetUser().RefreshProfile(); } return(new ANWI.Messaging.ConfirmUpdate( typeof(ANWI.Messaging.Request), success, uid)); }
private LiteProfile(Datamodel.User u) { id = u.id; auth0 = u.auth0; nickname = u.name; _rankId = u.rank; _primaryRateId = u.rate; }
private Profile(Datamodel.User user) { id = user.id; auth0 = user.auth0; nickname = user.name; _rankId = user.rank; _primaryRateId = user.rate; createdDate = DateTimeOffset.FromUnixTimeSeconds(user.created).DateTime; }
/// <summary> /// Gets a user by their Auth0 identifier /// </summary> /// <param name="auth0"></param> /// <returns></returns> public static Profile FetchByAuth0(string auth0) { Datamodel.User u = null; if (Datamodel.User.FetchByAuth0(ref u, auth0)) { return(new Profile(u)); } else { return(null); } }
/// <summary> /// Gets a user by ID /// </summary> /// <param name="id"></param> /// <returns></returns> public static Profile FetchById(int id) { Datamodel.User u = null; if (Datamodel.User.FetchById(ref u, id)) { return(new Profile(u)); } else { return(null); } }
private LiteVessel(Datamodel.UserShip s) { id = s.id; name = s.name; isLTI = Convert.ToBoolean(s.insurance); hullNumber = s.number; status = (VesselStatus)s.status; Datamodel.User u = null; if (!Datamodel.User.FetchById(ref u, s.user)) { throw new ArgumentException("Ship does not have valid owner ID"); } owner = u.name; _hullId = s.hull; }
private Vessel(Datamodel.UserShip s) { id = s.id; name = s.name; isLTI = Convert.ToBoolean(s.insurance); hullNumber = s.number; status = (VesselStatus)s.status; statusDate = DateTimeOffset.FromUnixTimeSeconds(s.statusDate).DateTime; final = s.final; _hullId = s.hull; Datamodel.User u = null; if (!Datamodel.User.FetchById(ref u, s.user)) { throw new ArgumentException( "Ship does not have valid owner ID"); } ownerId = u.id; ownerName = u.name; }
private bool CreateDatabaseUser(string nickname, string auth0_id) { // Create a basic profile Datamodel.User dbUser = null; bool res = Datamodel.User.Create(ref dbUser, nickname, auth0_id, 1); if (res) { logger.Info( $"Created user {nickname} ({auth0_id}) in database"); } else { logger.Error( $"Failed to create user {nickname} ({auth0_id}) in database" ); } return(res); }
private async void LoginUser(ANWI.Messaging.LoginRequest cred) { // Authenticate the user with Auth0 try { // Check version if (minimumVersion.CompareTo(cred.clientVer) > 0) { logger.Info( $"User {cred.username} has invalid version. " + $"Client: {cred.clientVer} Minimum: {minimumVersion}"); DenyLogin(ANWI.Messaging.LoginResponse.Code.FAILED_VERSION); return; } ResourceOwnerTokenRequest req = new ResourceOwnerTokenRequest() { ClientId = Configuration.auth0Settings.client, ClientSecret = Configuration.auth0Settings.secret, Realm = Configuration.auth0Settings.connection, Username = cred.username, Password = cred.password }; AccessTokenResponse token = null; try { token = await auth0Client.GetTokenAsync(req); } catch (Auth0.Core.Exceptions.ApiException e) { logger.Error( $"Failed to log in user {cred.username}: {e.Message}"); DenyLogin( ANWI.Messaging.LoginResponse.Code.FAILED_CREDENTIALS); return; } UserInfo user = await auth0Client.GetUserInfoAsync(token.AccessToken); logger.Info("Successfully authenticated user. Token: " + token.AccessToken); ANWI.AuthenticatedAccount account = new AuthenticatedAccount(); account.authToken = token.AccessToken; account.auth0_id = user.UserId; account.nickname = user.NickName; // Get the main user profile Datamodel.User dbUser = null; if (!Datamodel.User.FetchByAuth0(ref dbUser, account.auth0_id)) { logger.Info("Profile not found for user " + account.auth0_id + ". It will be created."); // Create a basic profile if (!CreateDatabaseUser(user.NickName, user.UserId)) { DenyLogin(ANWI.Messaging.LoginResponse. Code.FAILED_SERVER_ERROR); return; } } account.profile = Profile.FetchByAuth0(account.auth0_id); ANWI.Messaging.Message resp = new ANWI.Messaging.Message( 0, new ANWI.Messaging.LoginResponse( ANWI.Messaging.LoginResponse.Code.OK, account) ); SendMessage(resp); } catch (System.Net.Http.HttpRequestException e) { logger.Info("HTTP error when connecting to Auth0:\n" + e); DenyLogin( ANWI.Messaging.LoginResponse.Code.FAILED_SERVER_ERROR); return; } }