using Oqtane.Models; using System.Collections.Generic; using System.Threading.Tasks; namespace Oqtane.Services { /// /// Manage (get / update) user information /// public interface IUserService { /// /// Get a of a specific site /// /// ID of a /// ID of a /// Task GetUserAsync(int userId, int siteId); /// /// Get a of a specific site /// /// Username / login of a /// ID of a /// Task GetUserAsync(string username, int siteId); /// /// Get a of a specific site /// /// Username / login of a /// email address of a /// ID of a /// Task GetUserAsync(string username, string email, int siteId); /// /// Save a user to the Database. /// The object contains all the information incl. what it belongs to. /// /// /// Task AddUserAsync(User user); /// /// Update an existing user in the database. /// /// /// Task UpdateUserAsync(User user); /// /// Delete / remove a user in the database /// /// ID-reference to the /// ID-reference to the /// Task DeleteUserAsync(int userId, int siteId); /// /// Will login the specified . /// /// Note that this will probably not be a real User, but a user object where the `Username` and `Password` have been filled. /// /// A object which should have at least the and set. /// Determines if the login cookie should be set (only relevant for Hybrid scenarios) /// Determines if the login cookie should be persisted for a long time. /// Task LoginUserAsync(User user, bool setCookie, bool isPersistent); /// /// Logout a /// /// /// Task LogoutUserAsync(User user); /// /// Logout a /// /// /// Task LogoutUserEverywhereAsync(User user); /// /// Update e-mail verification status of a user. /// /// The we're verifying /// A Hash value in the URL which verifies this user got the e-mail (containing this token) /// Task VerifyEmailAsync(User user, string token); /// /// Trigger a forgot-password e-mail for this . /// /// /// Task ForgotPasswordAsync(User user); /// /// Reset the password of this /// /// /// /// Task ResetPasswordAsync(User user, string token); /// /// Verify the two factor verification code /// /// /// /// Task VerifyTwoFactorAsync(User user, string token); /// /// Validate a users password against the password policy /// /// /// Task ValidatePasswordAsync(string password); /// /// Get token for current user /// /// Task GetTokenAsync(); /// /// Get personal access token for current user (administrators only) /// /// Task GetPersonalAccessTokenAsync(); /// /// Link an external login with a local user account /// /// The we're verifying /// A Hash value in the URL which verifies this user got the e-mail (containing this token) /// External Login provider type /// External Login provider key /// External Login provider display name /// Task LinkUserAsync(User user, string token, string type, string key, string name); /// /// Get password requirements for site /// /// ID of a /// Task GetPasswordRequirementsAsync(int siteId); /// /// Bulk import of users /// /// ID of a /// ID of a /// Indicates if new users should be notified by email /// Task> ImportUsersAsync(int siteId, int fileId, bool notify); } }