public static bool LogIn(string username, string password, out string statusMessage) { IQueryable <UserPrivate> userPrivateQueryable = _documentClient.CreateDocumentQuery <UserPrivate>( PrivateUsersCollectionUri).Where(f => f.Id == username && f.Password == password); if (userPrivateQueryable.Count() != 1) { statusMessage = "Log in failed! Username or password is incorrect."; return(false); } foreach (UserPrivate user in userPrivateQueryable) { userPrivate = user; } statusMessage = $"Logged in as '{username}'"; IQueryable <UserPublic> userPublicQueryable = _documentClient.CreateDocumentQuery <UserPublic>( PublicUsersCollectionUri).Where(f => f.Id == username); foreach (UserPublic user in userPublicQueryable) { userPublic = user; } PiConnectionString = IoTClientManager.GetPiConnectionString(userPublic.Id); return(true); }
public static bool Register(string username, string password, string fullName, string macAddress, out string statusMessage) { UserPublic uPublic = new UserPublic(username, fullName, macAddress); UserPrivate uPrivate = new UserPrivate(username, password); if (!InputValidation.ValidateUsername(username, out statusMessage)) { return(false); } if (!InputValidation.ValidatePassword(password, out statusMessage)) { return(false); } string idToReplace = null; if (!InputValidation.ValidateMacAddress(macAddress, out statusMessage)) { if (statusMessage != StringConstants.MacAddressAlreadyExistsMessage) { return(false); } if (IsActualUser(macAddress, out idToReplace)) { return(false); } } if (string.IsNullOrWhiteSpace(fullName)) { statusMessage = "Your full name cannot be empty"; return(false); } if (!IoTClientManager.CreateDevice(username, out statusMessage)) { return(false); } if (idToReplace == null) { _documentClient.CreateDocumentAsync(PublicUsersCollectionUri, uPublic); } else { _documentClient.ReplaceDocumentAsync(PublicUserDocumentUri(idToReplace), uPublic); } _documentClient.CreateDocumentAsync(PrivateUsersCollectionUri, uPrivate); userPublic = uPublic; userPrivate = uPrivate; PiConnectionString = IoTClientManager.GetPiConnectionString(uPublic.Id); statusMessage = $"User '{username}' has been registered successsfully."; return(true); }
public static bool RequestPermission(string userToRequestName, out string ErrorMessage) { if (userPublic.AuthorizedPiList.Any(ap => ap.PiID == userToRequestName)) { ErrorMessage = $"You already have permission to scan {userToRequestName}'s home"; return(false); } IQueryable <UserPublic> userPublicQueryable = _documentClient.CreateDocumentQuery <UserPublic>( PublicUsersCollectionUri).Where(f => f.Id == userToRequestName); if (userPublicQueryable.Count() == 0) { ErrorMessage = $"You cannot request the permission to scan {userToRequestName}'s house because this user does not exist..."; return(false); } UserPublic userToRequest = null; foreach (UserPublic u in userPublicQueryable) { userToRequest = u; } if (userToRequest == null) { ErrorMessage = StringConstants.SomethingWentWrongScanPermissionErrorMessage; return(false); } ScanRequest scanRequest = new ScanRequest(userPublic.Id, userPublic.FullName); if (userToRequest.ScanRequestList.Any(u => u.UsernameRequester == userPublic.Id)) { ErrorMessage = $"You have already requested {userToRequestName} to scan their home"; return(false); } userToRequest.ScanRequestList.Add(scanRequest); try { _documentClient.ReplaceDocumentAsync(PublicUserDocumentUri(userToRequestName), userToRequest); } catch { ErrorMessage = StringConstants.SomethingWentWrongScanPermissionErrorMessage; return(false); } ErrorMessage = $"A request was sent to {userToRequestName}!"; return(true); }
public static bool IsActualUser(string macAddress, out string idToReplace) { idToReplace = null; IQueryable <UserPublic> userPublicQueryable = _documentClient.CreateDocumentQuery <UserPublic>( PublicUsersCollectionUri).Where(f => f.MacAddress == macAddress); UserPublic user = null; foreach (UserPublic u in userPublicQueryable) { user = u; } if (user == null) { return(false); } idToReplace = user.Id; return(!InputValidation.IsGeneratedId(user.Id)); }
public static bool ProcessPermissionsToRequester(ScanRequest scanRequest, bool acceptRequest, bool updateOwnUser, out string ErrorMessage) { ErrorMessage = string.Empty; if (!userPublic.ScanRequestList.Contains(scanRequest)) { ErrorMessage = "This request does not exist"; return(false); } bool returnStatus = true; if (acceptRequest) { IQueryable <UserPublic> userPublicQueryable = _documentClient.CreateDocumentQuery <UserPublic>( PublicUsersCollectionUri).Where(f => f.Id == scanRequest.UsernameRequester); do { if (userPublicQueryable.Count() == 0) { ErrorMessage = $"Cannot find the user requesting permission"; returnStatus = false; break; } UserPublic userRequesting = null; foreach (UserPublic u in userPublicQueryable) { userRequesting = u; } if (userRequesting.AuthorizedPiList.Any(ap => ap.PiID == userPublic.Id)) { ErrorMessage = $"{userRequesting.Id} already has permission to scan your home"; returnStatus = false; break; } AuthorizedPi authorization = new AuthorizedPi(userPublic.Id, userPublic.FullName, string.Empty); userRequesting.AuthorizedPiList.Add(authorization); _documentClient.ReplaceDocumentAsync(PublicUserDocumentUri(userRequesting.Id), userRequesting); }while(false); } userPublic.ScanRequestList.Remove(scanRequest); if (updateOwnUser) { UpdateUserPublic(InputType.Username, out string message); } if (returnStatus == true) { switch (acceptRequest) { case true: ErrorMessage = $"Successfully accepted {scanRequest.UsernameRequester}'s request"; break; case false: ErrorMessage = $"Denied {scanRequest.UsernameRequester}'s request to scan your home"; break; } } return(returnStatus); }