Search in sources :

Example 1 with RememberMe

use of com.tale.model.dto.RememberMe in project tale by otale.

the class TaleUtils method getCookieUid.

public static Integer getCookieUid(RouteContext context) {
    String rememberToken = context.cookie(REMEMBER_IN_COOKIE);
    if (null == rememberToken || rememberToken.isEmpty() || REMEMBER_TOKEN.isEmpty()) {
        return null;
    }
    if (!REMEMBER_TOKEN.equals(rememberToken)) {
        return null;
    }
    Options options = select().from(Options.class).where(Options::getName, OPTION_SAFE_REMEMBER_ME).one();
    if (null == options) {
        return null;
    }
    RememberMe rememberMe = JsonKit.formJson(options.getValue(), RememberMe.class);
    if (rememberMe.getExpires() < DateKit.nowUnix()) {
        return null;
    }
    if (!rememberMe.getRecentIp().contains(context.address())) {
        return null;
    }
    return rememberMe.getUid();
}
Also used : Options(com.tale.model.entity.Options) RememberMe(com.tale.model.dto.RememberMe)

Example 2 with RememberMe

use of com.tale.model.dto.RememberMe in project tale by otale.

the class TaleUtils method setCookie.

/**
 * 设置记住密码 cookie
 */
public static void setCookie(RouteContext context, Integer uid) {
    boolean isSSL = Commons.site_url().startsWith("https");
    String token = EncryptKit.md5(UUID.UU64());
    RememberMe rememberMe = new RememberMe();
    rememberMe.setUid(uid);
    rememberMe.setExpires(DateKit.nowUnix() + ONE_MONTH);
    rememberMe.setRecentIp(Collections.singletonList(context.address()));
    rememberMe.setToken(token);
    long count = select().from(Options.class).where(Options::getName, OPTION_SAFE_REMEMBER_ME).count();
    if (count == 0) {
        Options options = new Options();
        options.setName(OPTION_SAFE_REMEMBER_ME);
        options.setValue(JsonKit.toString(rememberMe));
        options.setDescription("记住我 Token");
        options.save();
    } else {
        update().from(Options.class).set(Options::getValue, JsonKit.toString(rememberMe)).where(Options::getName, OPTION_SAFE_REMEMBER_ME).execute();
    }
    Cookie cookie = new Cookie();
    cookie.name(REMEMBER_IN_COOKIE);
    cookie.value(token);
    cookie.httpOnly(true);
    cookie.secure(isSSL);
    cookie.maxAge(ONE_MONTH);
    cookie.path("/");
    context.response().cookie(cookie);
}
Also used : Cookie(com.blade.mvc.http.Cookie) Options(com.tale.model.entity.Options) RememberMe(com.tale.model.dto.RememberMe)

Example 3 with RememberMe

use of com.tale.model.dto.RememberMe in project tale by otale.

the class Bootstrap method load.

@Override
public void load(Blade blade) {
    JetbrickTemplateEngine templateEngine = new JetbrickTemplateEngine();
    List<String> macros = new ArrayList<>(8);
    macros.add(File.separatorChar + "comm" + File.separatorChar + "macros.html");
    // 扫描主题下面的所有自定义宏
    String themeDir = CLASSPATH + "templates" + File.separatorChar + "themes";
    File[] dir = new File(themeDir).listFiles();
    if (null != dir) {
        for (File f : dir) {
            if (f.isDirectory() && Files.exists(Paths.get(f.getPath() + File.separatorChar + "macros.html"))) {
                String macroName = File.separatorChar + "themes" + File.separatorChar + f.getName() + File.separatorChar + "macros.html";
                macros.add(macroName);
            }
        }
    }
    StringBuffer sbuf = new StringBuffer();
    macros.forEach(s -> sbuf.append(',').append(s));
    templateEngine.addConfig("jetx.import.macros", sbuf.substring(1));
    GlobalResolver resolver = templateEngine.getGlobalResolver();
    resolver.registerFunctions(Commons.class);
    resolver.registerFunctions(Theme.class);
    resolver.registerFunctions(AdminCommons.class);
    resolver.registerTags(JetTag.class);
    JetGlobalContext context = templateEngine.getGlobalContext();
    context.set("version", environment.get("app.version", "v1.0"));
    context.set("enableCdn", environment.getBoolean("app.enableCdn", false));
    blade.templateEngine(templateEngine);
    TaleConst.ENABLED_CDN = environment.getBoolean("app.enableCdn", false);
    TaleConst.MAX_FILE_SIZE = environment.getInt("app.max-file-size", 20480);
    TaleConst.OPTIONS.addAll(optionsService.getOptions());
    String ips = TaleConst.OPTIONS.get(Types.BLOCK_IPS, "");
    if (StringKit.isNotBlank(ips)) {
        TaleConst.BLOCK_IPS.addAll(Arrays.asList(ips.split(",")));
    }
    if (Files.exists(Paths.get(CLASSPATH + "install.lock"))) {
        TaleConst.INSTALLED = Boolean.TRUE;
    }
    String rememberToken = optionsService.getOption(OPTION_SAFE_REMEMBER_ME);
    if (StringKit.isNotEmpty(rememberToken)) {
        RememberMe rememberMe = JsonKit.formJson(rememberToken, RememberMe.class);
        TaleConst.REMEMBER_TOKEN = rememberMe.getToken();
    }
    BaseController.THEME = "themes/" + Commons.site_option("site_theme");
    TaleConst.BCONF = environment;
}
Also used : JetGlobalContext(jetbrick.template.JetGlobalContext) RememberMe(com.tale.model.dto.RememberMe) ArrayList(java.util.ArrayList) GlobalResolver(jetbrick.template.resolver.GlobalResolver) JetbrickTemplateEngine(com.blade.mvc.view.template.JetbrickTemplateEngine) File(java.io.File)

Aggregations

RememberMe (com.tale.model.dto.RememberMe)3 Options (com.tale.model.entity.Options)2 Cookie (com.blade.mvc.http.Cookie)1 JetbrickTemplateEngine (com.blade.mvc.view.template.JetbrickTemplateEngine)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 JetGlobalContext (jetbrick.template.JetGlobalContext)1 GlobalResolver (jetbrick.template.resolver.GlobalResolver)1