private async Task <Response> CreateUser() { var username = (string)Request.Form.Username; var userId = Mapper.CreateUser(username, Request.Form.Password, EnumHelper <Permissions> .All() - (int)Permissions.ReadOnlyUser, 0); Analytics.TrackEventAsync(Category.Wizard, Action.Finish, "Finished the wizard", username, CookieHelper.GetAnalyticClientId(Cookies)); Session[SessionKeys.UsernameKey] = username; // Destroy the Plex Auth Token Session.Delete(SessionKeys.UserWizardPlexAuth); // Update the settings so we know we have been through the wizard var settings = await PlexRequestSettings.GetSettingsAsync(); settings.Wizard = true; await PlexRequestSettings.SaveSettingsAsync(settings); var baseUrl = string.IsNullOrEmpty(settings.BaseUrl) ? string.Empty : $"/{settings.BaseUrl}"; return(CustomModuleExtensions.LoginAndRedirect(this, (Guid)userId, fallbackRedirectUrl: $"{baseUrl}/search")); }
public static Tuple <int, string> RegisterPermit <T>(this Public Public) where T : struct { var droit = typeof(T).FullName; var permitId = AuthorityHelper.PermitId <T>(); if (PermitTypes.TryGetValue(permitId, out Type type)) { if (type != typeof(T)) { throw new CissyException($"权限点类型ID冲突,请重新定义Id:{type.FullName}跟{typeof(T).FullName}之间"); } } else { PermitTypes[permitId] = typeof(T); } var enumname = EnumHelper.EnumName <T>(); var authorityname = $"{enumname}:{permitId}"; var groupname = AuthorityHelper.PermitGroup <T>(); var rootname = $"{groupname}"; if (!Permits.TryGetValue(rootname, out Dictionary <string, IEnumerable <string> > dict)) { dict = new Dictionary <string, IEnumerable <string> >(); Permits[rootname] = dict; } if (!dict.ContainsKey(authorityname)) { List <string> list = new List <string>(); foreach (T t in EnumHelper.All <T>()) { list.Add($"{t.StringValue()}:{t.Value()}"); } dict[authorityname] = list; } return(new Tuple <int, string>(permitId, droit)); }
public LoginModule(ISettingsService <PlexRequestSettings> pr, ICustomUserMapper m, IResourceLinker linker, IRepository <UserLogins> userLoginRepo, ISecurityExtensions security) : base(pr, security) { UserMapper = m; Get["LocalLogin", "/login"] = _ => { if (LoggedIn) { var url = linker.BuildRelativeUri(Context, "SearchIndex"); return(Response.AsRedirect(url.ToString())); } dynamic model = new ExpandoObject(); model.Redirect = Request.Query.redirect.Value ?? string.Empty; model.Errored = Request.Query.error.HasValue; var adminCreated = UserMapper.DoUsersExist(); model.AdminExists = adminCreated; return(View["Index", model]); }; Get["/logout"] = x => { if (Session[SessionKeys.UsernameKey] != null) { Session.Delete(SessionKeys.UsernameKey); } return(CustomModuleExtensions.LogoutAndRedirect(this, !string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/" : "~/")); }; Post["/login"] = x => { var username = (string)Request.Form.Username; var password = (string)Request.Form.Password; var dtOffset = (int)Request.Form.DateTimeOffset; var redirect = (string)Request.Form.Redirect; var userId = UserMapper.ValidateUser(username, password); if (userId == null) { return (Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/login?error=true&username="******"~/login?error=true&username="******"userlogin")) { redirect = !string.IsNullOrEmpty(BaseUrl) ? $"/{BaseUrl}/search" : "/search"; } userLoginRepo.Insert(new UserLogins { LastLoggedIn = DateTime.UtcNow, Type = UserType.LocalUser, UserId = userId.ToString() }); return(CustomModuleExtensions.LoginAndRedirect(this, userId.Value, expiry, redirect)); }; Get["/register"] = x => { { dynamic model = new ExpandoObject(); model.Errored = Request.Query.error.HasValue; return(View["Register", model]); } }; Post["/register"] = x => { var username = (string)Request.Form.Username; var exists = UserMapper.DoUsersExist(); if (exists) { return (Context.GetRedirect(!string.IsNullOrEmpty(BaseUrl) ? $"~/{BaseUrl}/register?error=true" : "~/register?error=true")); } var userId = UserMapper.CreateUser(username, Request.Form.Password, EnumHelper <Permissions> .All(), 0); Session[SessionKeys.UsernameKey] = username; return(CustomModuleExtensions.LoginAndRedirect(this, (Guid)userId)); }; Get["/changepassword"] = _ => ChangePassword(); Post["/changepassword"] = _ => ChangePasswordPost(); }